两天前,我开始使用 Symfony 编写一个网络应用程序。现在,我正在尝试使用 Doctrine 来保存一个新用户(我已经使用命令 php app/console doctrine:generate:entities
在我的数据库中创建了一个实体和“链接”表) .
当我在订阅表单上使用 POST HTTP 请求时,Symfony 告诉我:
could not find driver
500 Internal Server Error - PDOException
我在 Google 和这里找到了很多解决方案,但没有一个有效:/
命令 php -m
给我:
...
PDO
pdo_mysql
...
我不明白为什么这不起作用,因为 Doctrine 可以生成用户实体并连接到 mysql 数据库(因为它在其中创建了一个名为“User”的表)。
phpinfo() 告诉我“PDO 驱动程序”“没有值(value)”。我想这就是我遇到一些问题的原因。
另外,它告诉我:
Configuration File (php.ini) Path : /etc/php5/cli
Loaded Configuration File : /etc/php5/cli/php.ini
我在文件“/etc/php5/cli/php.ini”中添加了以下行,并使用“/etc/init.d/apache2 restart”命令重新启动了 apache 服务器,但它没有任何改变 =/
extension=php_mysql.so
extension=php_mysqli.so
extension=php_pdo_mysql.so
extension=pdo.so
“php --ini”现在产生:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525/php_mysql.so' - /usr/lib/php5/20100525/php_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525/php_mysqli.so' - /usr/lib/php5/20100525/php_mysqli.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525/php_pdo_mysql.so' - /usr/lib/php5/20100525/php_pdo_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: Module 'PDO' already loaded in Unknown on line 0
Configuration File (php.ini) Path: /etc/php5/cli
Loaded Configuration File: /etc/php5/cli/php.ini
Scan for additional .ini files in: /etc/php5/cli/conf.d
Additional .ini files parsed: /etc/php5/cli/conf.d/10-pdo.ini,
/etc/php5/cli/conf.d/20-curl.ini,
/etc/php5/cli/conf.d/20-gd.ini,
/etc/php5/cli/conf.d/20-mysql.ini,
/etc/php5/cli/conf.d/20-mysqli.ini,
/etc/php5/cli/conf.d/20-pdo_mysql.ini,
/etc/php5/cli/conf.d/20-pdo_pgsql.ini,
/etc/php5/cli/conf.d/20-pdo_sqlite.ini,
/etc/php5/cli/conf.d/20-pgsql.ini,
/etc/php5/cli/conf.d/20-sqlite3.ini
pdo 驱动应该放在哪里?我想我错过了什么?
最佳答案
您的问题很可能是由于没有为网络服务器的 PHP 启用 pdo 而引起的。 PHP 可以对 CLI 和网络服务器有不同的配置。您的所有输出都来自 PHP CLI。但是您的 CLI 的 php.ini
没问题,这就是控制台正常工作的原因。这是未正确设置的 CGI 或 FPM。
您需要找到 CGI 或 FPM php.ini
(位置可能会根据您的设置而变化 - 请参阅 this answer 了解更多信息)并确保您要使用的 PDO 和 PDO 驱动程序在那里启用。
关于mysql - Symfony2 : Doctrine "could not find driver",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29128009/