我已经检查了启用了扩展名的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 |内部服务器错误| PropelException 无法打开PDO连接[包裹:找不到驱动程序]
我现在需要做什么?消除此错误
感谢
答案 0 :(得分:2)
找出你真正需要的PDO驱动程序(MySQL,MS SQL ......?)
通过自己实例化PDO进行测试,以避免其他地方出现错误:
$db = new PDO('mysql:host=127.0.0.1;dbname=testdb', 'username', 'password');
如果你仍然“找不到司机”,现在你可以确定你真的错过了它:)
如果您还没有安装它,如何安装它取决于您的系统。例如,在Debian Linux上,您需要执行apt-get install php5-mysql
,它会安装mysql
,mysqli
和pdo_mysql
个扩展程序。
安装后,请确保在php.ini
中启用它。确保您正在编辑正确的文件 - 您的网络服务器使用的文件。
之后,要验证扩展程序是否已正确加载,请执行以下操作:
创建一个执行phpinfo()
的脚本。您应该看到 PDO 部分,其中包含 PDO驱动程序键和“mysql, pgsql
”或
从命令行运行php -m
,您应该看到pdo_mysql
例如。
答案 1 :(得分:1)
扩展目录中的php_pdo_mysql.dll可能正在尝试加载libmysql.dll或mysql.dll,默认情况下是在php目录中(我认为 - 它们至少在我的php目录中但是我安装了这么长时间以前我不记得他们是默认在那里还是我在那里复制了它们。如果php目录不在你的PATH中,那么后面的dll将找不到并导致错误。
我建议检查libmysql.dll和/或mysql.dll是否在你的php目录中。如果是这样,请将您的php目录添加到系统的PATH和 REBOOT 您的计算机。我有同样的问题,将php目录添加到系统的路径,重新启动 Apache并且问题没有解决。我需要重新启动才能在Apache / PHP中找到php目录中的dll。
另一种方法是将libmysql.dll和mysql.dll复制到默认搜索的目录中(是Windows目录还是Window \ System32目录)。当加载php_pdo_mysql.dll时,它将能够找到依赖的dll。
如果这两个dll不在您的php目录中,请尝试下载并安装MySQL。您可以在MySQL安装程序中安装的文件中找到这些dll。
如果你正在使用Apache,它应该在错误日志中报告它无法加载php_pdo_mysql.dll。如果没有,也许它在启动时报告了一些其他错误。从日志中发布任何错误可能有助于诊断。
希望这有帮助。
答案 2 :(得分:0)
在php.ini中设置以下内容以检查加载扩展是否存在问题。
display_startup_errors = On
答案 3 :(得分:0)
过去我遇到过问题,尽管DLL在php / ext /目录下,尽管php路径设置正确,但我必须指定扩展名的绝对路径。
检查Apache错误日志以查看加载扩展程序是否存在问题
答案 4 :(得分:0)
您使用的是命令行吗?
浏览器中的命令行和PHP通常使用不同的PHP.ini文件。
使用phpinfo()检查borwser中包含的模块 使用PHP -m查看通过CLI安装的模块