我刚刚安装了Debian Lenny与Apache, MySQL和PHP,我收到一个PDOException无法找到驱动程序。
这是它所引用的特定代码行:
$dbh = new PDO('mysql:host=')。DB_HOST。”;dbname = '。Db_name, db_user, db_pass)
DB_HOST、DB_NAME、DB_USER和DB_PASS是我已经定义的常量。它在生产服务器(以及我之前的Ubuntu server设置)上运行良好。
这与我的PHP安装有关吗?
在网上搜索也没有帮助,我得到的都是专家交流和例子,但没有解决方案。
对于那些使用Symfony2/3并想知道为什么会得到这个错误的人。如果您正在使用“mapping_types”,则可能会遇到此错误。原因是“mapping_types”被放在了错误的级别。例如:
doctrine:
dbal:
mapping_types:
set: string
这个“mapping_types”必须放在这个级别:
doctrine:
dbal:
#To counter the error caused by 'mapping_types'
connections:
default:
server_version: %database_server_version%
mapping_types:
set: string
我希望这对你们有帮助
我在这里找到了解决方案:https://github.com/doctrine/DoctrineBundle/issues/327
我在我的Debian 6上修复了这个问题。
通常我只是安装了php5-common package。安装后,你必须重新启动你的web服务器(apache或nginx取决于你安装的哪个)。
然后我只是在apache进程id (lsof -p process_id)上做一个lsof,如下所示:
sudo lsof -p 1399 #replace 1399 by your apache process id
apache2 1399 root mem REG 254,2 80352 227236 /usr/lib/php5/20090626/xmlrpc.so
apache2 1399 root mem REG 254,2 166496 227235 /usr/lib/php5/20090626/suhosin.so
apache2 1399 root mem REG 254,2 31120 227233 /usr/lib/php5/20090626/pdo_mysql.so
apache2 1399 root mem REG 254,2 100776 227216 /usr/lib/php5/20090626/pdo.so
apache2 1399 root mem REG 254,2 135864 227232 /usr/lib/php5/20090626/mysqli.so
正如您在上面看到的,模块安装在一个不知道的文件路径上,或者由公共库路径引导:/usr/lib/php5/20090626/。对于您的安装,它可能不同,但只有pdo_mysql的路径。所以,pdo。所以,mysqli.so。所以,这就是为什么Drupal或其他php引擎找不到这个库,并显示错误:PDOException: could not find driver
我只是不知道为什么它被安装在这么奇怪的路径上,对我来说,这只是debian 6中库包安装脚本中的一个错误。
我通过为/usr/lib/php5/20090626/ to下的所有文件创建一个符号来解决这个问题
/usr/lib/php5/
在s /usr/lib/php5/20090626/* /usr/lib/php5/