我已经检查了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文件,扩展已启用:
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连接[封装:找不到驱动程序]
现在我需要做什么?以消除这个错误
谢谢
找出你实际需要哪种PDO驱动程序(MySQL、MS SQL等)
通过自己实例化PDO进行测试,以避免出现其他错误:
$db = new PDO('mysql:host=127.0.0.1;dbname=testdb', 'username', 'password');
如果你仍然收到“could not find driver”错误,那么你可以确定你确实缺少它 :)
如何安装它,如果你还没有它,这取决于你的系统。例如,在Debian Linux上,你需要执行apt-get install php5-mysql
,它将安装mysql
,mysqli
和pdo_mysql
扩展。
安装后,请确保在php.ini
中启用它。确保你编辑的是正确的文件——即你的web服务器使用的文件。
之后,要验证扩展是否已成功加载,可以执行以下操作之一:
创建一个执行phpinfo()
的脚本。你应该看到一个PDO部分,其中包含一个PDO drivers键和一个值,例如“mysql、pgsql
”,或者
从命令行运行php -m
,你应该看到例如pdo_mysql
。
在扩展目录中的php_pdo_mysql.dll可能正在尝试加载libmysql.dll或mysql.dll,默认情况下它们位于php目录中(我想是这样-至少在我的php目录中,但我安装它已经很久了,我记不清它们是否默认存在或者我是否将它们复制到那里)。如果php目录不在您的PATH中,则这些后面的dll将无法找到并导致错误。
我建议检查libmysql.dll和/或mysql.dll是否在您的php目录中。如果是,请将您的php目录添加到系统的PATH中,并重新启动计算机。我曾经遇到过同样的问题,将php目录添加到系统的路径中,在重启Apache之前问题没有得到解决。我需要在Apache / PHP在php目录中找到dll之前重新启动。
另一种选择是将libmysql.dll和mysql.dll复制到默认搜索的目录中(是Windows目录还是Window\System32目录)。当加载php_pdo_mysql.dll时,它将能够找到相关的dll。
如果这两个dll不在您的php目录中,请尝试下载并安装MySQL。您可能会发现这些dll在MySQL安装程序安装的文件中。
如果您正在使用Apache,它应该在错误日志中报告无法加载php_pdo_mysql.dll。如果没有,请检查是否在启动时报告了其他错误。发布日志中的任何错误可能有助于诊断。display_startup_errors = On
过去我曾经遇到过问题,尽管DLL文件已经放在了php/ext/目录下且php路径设置正确,但是我仍然需要指定扩展的绝对路径。
检查Apache错误日志以查看是否加载扩展时出现问题。
php --ini
命令,查看是否缺少某个扩展。如果是这样,请打开您的php.ini
文件,并检查扩展路径是否正确。寻找extension_dir
。 - Highmastdon