Symfony dbal 异常:找不到驱动程序
Symfony bdal Excepiton: could not find driver
在命令行上我得到了连接和所需的实体,这里没有驱动程序错误:
php bin/console dbal:run-sql 'select * from ourtest'
但是在网络上我得到错误:
$this->connection->fetchAll('SELECT * FROM ourtest');
Handling
"App\Application\Command\DocumentUpload\DocumentUploadCommand" failed:
An exception occurred in driver: could not find driver
我试过了
php -m 显示 PDO、pdo_mysql、mysqli、mysqlnd
连接 url 来自 .env:
DATABASE_URL=mysql://xxx:xxx@mysql-db:3306/db_test_01?serverVersion=8.0
doctrine.yaml:
doctrine:
dbal:
dbname: db_test_01
host: mysql-db
port: 3306
user: xxx
password: xxx
driver: pdo_mysql
version: 8.0
我的猜测是命令行和您的网络服务器使用不同的 PHP 配置或完全不同的安装。
查找方法如下:将 phpinfo()
调用放入网络服务器上的一个文件中(不要在生产环境中这样做,因为它会将敏感数据暴露给有权访问该文件的任何人!)。在浏览器中打开该文件并检查 PHP 安装位置。
在命令行上,您可以 运行 which php
查看 PHP 二进制文件所在的位置。
比较两者,看看您是否运行正在使用同一个二进制文件。如果确实相同,那么您应该检查网络服务器使用了哪个 .ini
文件。在该 .ini
文件中,您应该找到 mysql 扩展名 (pdo_mysql.so
) 并且不应将其注释掉(前面没有 ;
)。
在命令行上我得到了连接和所需的实体,这里没有驱动程序错误:
php bin/console dbal:run-sql 'select * from ourtest'
但是在网络上我得到错误:
$this->connection->fetchAll('SELECT * FROM ourtest');
Handling "App\Application\Command\DocumentUpload\DocumentUploadCommand" failed: An exception occurred in driver: could not find driver
我试过了
php -m 显示 PDO、pdo_mysql、mysqli、mysqlnd
连接 url 来自 .env:
DATABASE_URL=mysql://xxx:xxx@mysql-db:3306/db_test_01?serverVersion=8.0
doctrine.yaml:
doctrine:
dbal:
dbname: db_test_01
host: mysql-db
port: 3306
user: xxx
password: xxx
driver: pdo_mysql
version: 8.0
我的猜测是命令行和您的网络服务器使用不同的 PHP 配置或完全不同的安装。
查找方法如下:将 phpinfo()
调用放入网络服务器上的一个文件中(不要在生产环境中这样做,因为它会将敏感数据暴露给有权访问该文件的任何人!)。在浏览器中打开该文件并检查 PHP 安装位置。
在命令行上,您可以 运行 which php
查看 PHP 二进制文件所在的位置。
比较两者,看看您是否运行正在使用同一个二进制文件。如果确实相同,那么您应该检查网络服务器使用了哪个 .ini
文件。在该 .ini
文件中,您应该找到 mysql 扩展名 (pdo_mysql.so
) 并且不应将其注释掉(前面没有 ;
)。