检查了php.ini文件";extension=php_pdo_mysql.dll“;已启用但仍存在错误

检查了php.ini文件";extension=php_pdo_mysql.dll“;已启用但仍存在错误,php,open-source,symfony1,Php,Open Source,Symfony1,我已经检查了php.ini文件,扩展名已启用: extension=php_pdf.dll extension=php_pdo.dll extension=php_pdo_firebird.dll extension=php_pdo_mssql.dll extension=php_pdo_mysql.dll 但当我试图打开页面时,仍然会出现错误 500 |内部服务器错误|属性异常 无法打开PDO连接[已包装:找不到驱动程序] 我现在需要做什么?要消除此错误 感谢php.ini中的设置以下内容以

我已经检查了php.ini文件,扩展名已启用:

extension=php_pdf.dll
extension=php_pdo.dll
extension=php_pdo_firebird.dll
extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
但当我试图打开页面时,仍然会出现错误

500 |内部服务器错误|属性异常 无法打开PDO连接[已包装:找不到驱动程序]

我现在需要做什么?要消除此错误


感谢php.ini中的设置以下内容以检查加载扩展是否有问题

display_startup_errors = On
  • 找出您实际需要的PDO驱动程序(MySQL、MS SQL…?)

  • 通过自己实例化PDO进行测试,以避免其他地方出现错误:

    $db=newpdo('mysql:host=127.0.0.1;dbname=testdb','username','password')

如果您仍然得到“找不到驱动程序”,现在您可以确定您确实错过了它:)

如果您还没有安装,如何安装它在很大程度上取决于您的系统。例如,在Debian Linux上,您需要执行
apt get install php5 mysql
,它安装
mysql
mysqli
pdo_mysql
扩展

display_startup_errors = On
安装后,请确保它已在
php.ini
中启用。确保您正在编辑正确的文件-您的Web服务器使用的文件

之后,要验证扩展是否正确加载,请执行以下操作之一:

  • 创建一个执行
    phpinfo()
    的脚本。您应该看到一个PDO部分,其中包含一个键PDO驱动程序和一个值,例如“
    mysql、pgsql
    ”或

  • 从命令行运行
    php-m
    ,您将看到例如
    pdo_mysql


扩展目录中的php_pdo_mysql.dll可能正在尝试加载libmysql.dll或mysql.dll,默认情况下它们位于php目录中(我想-它们至少在我的php目录中,但我很久以前就安装了它,我不记得它们是默认存在的还是我复制的)。如果php目录不在您的路径中,将找不到这些dll并导致错误

我建议检查libmysql.dll和/或mysql.dll是否在php目录中。如果是这样,请将php目录添加到系统路径并重新启动计算机。我也遇到了同样的问题,将php目录添加到系统路径,重新启动Apache,但问题没有得到解决。在Apache/PHP在PHP目录中找到dll之前,我需要重新启动

另一种方法是将libmysql.dll和mysql.dll复制到默认搜索的目录中(是Windows目录还是Windows\System32目录)。加载php_pdo_mysql.dll后,它将能够找到依赖的dll

如果这两个DLL不在php目录中,请尝试下载并安装MySQL。您可以在MySQL安装程序中安装的文件中找到这些DLL

如果您使用的是Apache,它应该在错误日志中报告无法加载php_pdo_mysql.dll。如果不是,可能是它在启动时报告了一些其他错误。从日志中发布任何错误可能有助于诊断

希望这有帮助。

  • 过去我遇到过一些问题,尽管DLL位于php/ext/目录中,尽管php路径设置正确,但我必须指定扩展的绝对路径

  • 检查Apache错误日志,查看加载扩展是否有问题


您正在使用命令行吗

通常,浏览器中的命令行和PHP使用不同的PHP.ini文件

使用phpinfo()检查borwser上包含的模块
使用PHP-m查看通过CLI安装的模块

首先,您应该发布导致问题的代码。我对symfony是新手,我所做的只是PHP symfony propel生成crud前端post并尝试打开检查[phpinst]中是否有PHP_pdo_mysql.dll/extdirectioryrun
php--ini
并查看是否缺少扩展。如果是这样,请打开
php.ini
,查看扩展路径是否正确。查找扩展目录