在命令行上,我得到了连接和所需的实体,这里没有驱动程序错误:
php bin/console dbal:run-sql 'select * from ourtest'
但是在web上我得到错误:
$this->connection->fetchAll('SELECT * FROM ourtest');
处理"App 程序命令 DocumentUpload DocumentUploadCommand"失败:driver: could not find driver
出现异常
我试着
php -m显示PDO, pdo_mysql, mysqli, mysqnd
从.env连接url:
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
我的猜测是命令行和你的web服务器使用不同的PHP配置或不同的安装。
在你的web服务器上的一个文件中放置一个phpinfo()
调用(不要在生产环境中这样做,因为它会将敏感数据暴露给任何访问该文件的人!)。在浏览器中打开该文件并检查PHP安装的位置。
在命令行中,您可以运行which php
来查看PHP二进制文件的位置。
比较两者,看看您是否运行在相同的二进制文件上。如果确实相同,那么您应该检查web服务器使用的是哪个.ini
文件。在.ini
文件中,你应该找到mysql扩展名(pdo_mysql.so
)的名称,它不应该被注释掉(没有前面的;
)。