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) 并且不应将其注释掉(前面没有 ;)。