- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Docker 中运行 Laravel 5.5/Postgres 应用程序时遇到问题。我在日志中看到此错误:
could not find driver {"exception":"[object] (Doctrine\DBAL\Driver\PDOException
通常要修复此错误,我必须在 ubuntu 的控制台中运行:
composer require doctrine/dbal
我在文件docker-compose.yml中:
...
lprods_composer:
image: composer:1.6
container_name: lprods_composer_container
volumes:
- ${APP_PATH_HOST}:${APP_PTH_CONTAINER}
working_dir: ${APP_PTH_CONTAINER}
command: composer install --ignore-platform-reqs
有什么方法可以缓解吗?我想我必须在我的 docker-compose.yml 文件中设置此选项?
修改 block #2
我尝试解决这个问题如下:在项目的composer.json
中,我在“require”
下添加了“doctrine/dbal”:“~2.5”
声明,现在这个文件是:
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"php": ">=5.6.4",
"barryvdh/laravel-debugbar": "^2.3",
"graham-campbell/markdown": "^8.0",
"intervention/image": "^2.3",
"khill/lavacharts": "3.0.*",
"laravel/framework": "5.5.*",
"laravel/socialite": "^3.0",
"laravel/tinker": "~1.0",
"laravelcollective/html": "^5.4.0",
"nwidart/laravel-modules": "^2.2",
"doctrine/dbal": "~2.5",
"wboyz/laravel-enum": "^0.2.1"
},
"require-dev": {
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "~6.0",
"stolz/laravel-html-tidy": "^0.1.1",
"xethron/migrations-generator": "^2.0",
"filp/whoops" : "~2.0"
},
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/",
"Modules\\": "Modules/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"scripts": {
"post-root-package-install": [
"php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"php artisan key:generate"
],
"post-install-cmd": [
"Illuminate\\Foundation\\ComposerScripts::postInstall",
"php artisan optimize"
],
"post-update-cmd": [
"Illuminate\\Foundation\\ComposerScripts::postUpdate",
"php artisan optimize"
],
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover"
]
},
"config": {
"preferred-install": "dist",
"sort-packages": true,
"optimize-autoloader": true
}
}
我重建了应用程序,清除了缓存,但运行应用程序时,我在日志文件中收到错误:
[2018-11-01 12:40:09] local.ERROR: could not find driver {"exception":"[object] (Doctrine\DBAL\Driver\PDOException(code: 0):
could not find driver at /var/www/html/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:47, PDOException(code: 0): could not find driver at /var/www/html/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:43) [stacktrace]
#0 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php(64): Doctrine\DBAL\Driver\PDOConnection->__construct('pgsql:host=127....', 'postgres', '1', Array)
#1 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php(43): Illuminate\Database\Connectors\Connector->createPdoConnection('pgsql:host=127....', 'postgres', '1', Array)
#2 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/PostgresConnector.php(33): Illuminate\Database\Connectors\Connector->createConnection('pgsql:host=127....', Array, Array)
#3 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php(183): Illuminate\Database\Connectors\PostgresConnector->connect(Array)
#4 [internal function]: Illuminate\Database\Connectors\ConnectionFactory->Illuminate\Database\Connectors\{closure}() ...
1) 我的声明无效吗?
2)我尝试在我的容器框中运行,但得到:
# composer require doctrine/dbal
bash: composer: command not found
我想在我的容器框中我可以尝试安装composer,但这是正确的方法吗?
你有什么建议?
修改 block #3我尝试按照您的步骤操作并使用 web/Dockerfile.yml 文件中的内容
FROM composer:1.7
RUN apk --no-cache add postgresql-dev && docker-php-ext-install pgsql pdo_pgsql
我成功编译了:
$ docker-compose up -d --build
Creating network "lprods_docker_default" with the default driver
Building lprods_app
Step 1/2 : FROM composer:1.7
---> 3f6a33c5e9d9
Step 2/2 : RUN apk --no-cache add postgresql-dev && docker-php-ext-install pgsql pdo_pgsql
... /* LONG OUTPUT */
(21/23) Purging mpfr3 (3.1.5-r1)
(22/23) Purging isl (0.18-r0)
(23/23) Purging gmp (6.1.2-r1)
Executing busybox-1.28.4-r1.trigger
OK: 120 MiB in 66 packages
Removing intermediate container 37d149da2e44
---> d3029f0a2f29
Successfully built d3029f0a2f29
Successfully tagged lprods_docker_lprods_app:latest
Creating lprods_docker_lprods_app_1 ... done
Creating lprods_docker_lprods_db_1 ... done
Creating lprods_docker_lprods_composer_1 ... done
Creating lprods_docker_lprods_adminer_1 ... done
但是接下来我无法进入框:
$ docker-compose exec lprods_app bash
ERROR: No container found for lprods_app_1
$ docker-compose exec lprods_app_1 bash
ERROR: No such service: lprods_app_1
$ docker-compose exec lprods_docker_lprods_app_1 bash
ERROR: No such service: lprods_docker_lprods_app_1
$ docker-compose exec lprods_docker_lprods_app bash
ERROR: No such service: lprods_docker_lprods_app
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
lprods_docker_lprods_app latest d3029f0a2f29 5 minutes ago 180MB
<none> <none> 3c5cdf1cd86d About an hour ago 388MB
composer 1.7 3f6a33c5e9d9 7 days ago 156MB
votes_docker_votes_app latest cdfca8c44268 7 days ago 413MB
adminer latest e07e38f6e446 2 weeks ago 81.6MB
mysql 5.6.41 085b9b6ec8a9 3 weeks ago 256MB
php 7.1-apache 93e6fb4b13e1 3 weeks ago 369MB
php 7.2-apache cf1a377ba77f 3 weeks ago 377MB
composer 1.6 eea351f3627d 3 weeks ago 155MB
postgres 9.6.10-alpine 5433943ddb9f 8 weeks ago 38.6MB
hello-world latest e38bc07ac18e 7 months ago 1.85kB
composer/composer latest 5afb0951f2a4 2 years ago 636MB
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0f79ebc93d62 adminer "entrypoint.sh docke…" 6 minutes ago Up 6 minutes 0.0.0.0:8083->8080/tcp lprods_docker_lprods_adminer_1
caed5c2ae860 postgres:9.6.10-alpine "docker-entrypoint.s…" 6 minutes ago Up 6 minutes 0.0.0.0:5433->5432/tcp lprods_docker_lprods_db_1
2f73a600b999 adminer "entrypoint.sh docke…" 7 days ago Up 2 hours 0.0.0.0:8082->8080/tcp votes_docker_adminer_1
52ea479b8791 mysql:5.6.41 "docker-entrypoint.s…" 7 days ago Restarting (1) 4 seconds ago votes_docker_db_1
为什么会出现错误以及我要使用哪个容器名称?
谢谢!
最佳答案
composer image不发货 pgsql
扩展名。
这可以通过列出编译的模块来验证。
docker-compose exec service php -m
在编译模块列表中输出到stderr
, pgsql
和pdo_pgsql
应该缺失。
您可能会在 Docker 注册表中找到一个镜像,其中包含 Composer、带有 pgsql 和 pdo_pgsql 扩展的 php,甚至 Laravel(请验证它是否来自可信来源)。
现在,如果您想继续 composer
作为基础图像。本答案的其余部分提供了相应的步骤。
虽然您可以在正在运行的容器中执行 bash session ,并且安装所需的扩展;此更改仅在该容器实例的生命周期内持续存在。
我建议一个更持久的配置,包括构建图像为了服务。在此 Dockerfile 配置中构建镜像; the required extensions are installed .
注意,在以下代码示例中,您应该替换为您的服务的名称例如lprods_composer
.Dockerfile
FROM composer:1.7
RUN apk --no-cache add postgresql-dev && docker-php-ext-install pgsql pdo_pgsql
这个<service>.Dockerfile
可以在docker-compose.yaml
中的服务定义中使用.
<service>:
build:
context: ./
dockerfile: <service>.Dockerfile
还记得配置连接参数以连接到 Postgres 数据库。这可以在 environment
中的任何一个中提供。和 env_file
配置。
通过在tinker中运行测试查询来测试您的配置是否成功
启动修补程序 REPL
docker-compose exec service php artisan tinker
然后在 REPL 中执行此查询
DB::connection()->query()->selectRaw("version();")->get()
成功的配置应该输出正在运行的 postgres 的版本。
关于laravel-5 - 如何使用 laravel 5 应用程序修复 docker 中的 Doctrine\\DBAL\\Driver\\PDOException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53076946/
我正在使用 symfony,当我在控制台中输入以下内容时: php app/console doctrine:schema:create 我有以下错误 [Doctrine\DBAL\Exception
我在 PHP 中收到以下错误: Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2003]
这是我的代码: $db = new PDO('mysql:host=192.168.1.1;dbname=mydb'); 是否可以更改异常消息“无法连接到‘192.168.1.1’上的 MySQL 服
我在 PHP 中收到以下错误: Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2003]
我安装了 Laravel 并从 git 服务器克隆了一个存储库以在临时服务器上使用。安装所有必需的工具后,我想迁移数据库。我现在得到的错误是: [2016-05-04 16:54:51] local.
如果我无法连接到数据库(例如 xamp 关闭或数据库连接关闭等),我会 try catch 错误。我尝试使用 PDO::errorCode() 但没有产生结果。 在我的php中,我有一个connect
当我运行以下代码时,出现此错误: Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: numb
我正在使用 Articles 类从我的数据库中提取关于 ..articles 的数据。我可以使用实例来插入数据、修改它,但我似乎无法从不同的页面集使用它。文件夹结构如下所示/cms/conf.php(
这个问题在这里已经有了答案: PHP Fatal error: Uncaught PDOException: could not find driver (4 个答案) PDOException “
这段代码工作正常,但我想处理 exception如果有任何问题,所以我故意在 query 中犯了一个语法错误但没有任何反应。下面是代码 try { $sql = "INSERT INTO jo
我不知道如何在下面的代码中捕获PDOException,请告诉我在下面的代码中哪里抛出异常? 我有(目录): - folder -1) b.php -2) c.php - au
我有一段简单的代码,在 PHP 中使用 PDO: $conn = new PDO('mysql:host=localhost;dbname=someDatabase', $username, $pas
我目前正在通过终端在 Laravel 中进行迁移,并且在尝试使用 php artisan migrate 时出现这两个错误;我将在下面打印错误: Exception trace: 1 PDOE
try { self::$dbinstance = new PDO( "mysql:host=$c[host];dbname=$c[dbname]", $c['user'],
我目前正在完善我的网站,一切正常但我一直收到错误。它不会破坏任何东西,但看起来很烦人。我一直在尝试很多东西,但我需要一些新的眼光来看待这个问题:/ 错误 PHP Fatal error: Cannot
获取POST传递过来的信息,将字符串中的所有空格去掉,然后启动一个新的pdo实例,连接mysql,将POST传递过来的信息插入到表中。 $title = trim($_POST["title"]);
我可以将迁移迁移到数据库,但是当我访问公用文件夹时,我收到一个 PDOException : SQLSTATE[28000] [1045] 用户“root”@“localhost”访问被拒绝(使用密码
我在 CentOS 7 上使用 PHP 5.6 运行 MariaDB。这是我的连接字符串: try { $connStr = 'mysql:host=server;dbname=mysql';
try { self::$dbinstance = new PDO( "mysql:host=$c[host];dbname=$c[dbname]", $c['user'],
所以我正在尝试为这样的 Laravel 应用程序编写单元测试: protected function setUp() { parent::setUp(); $this->disable
我是一名优秀的程序员,十分优秀!