4

我检查了启用扩展的 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 连接 [包装:找不到驱动程序]

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

谢谢

4

5 回答 5

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和扩展。mysqlipdo_mysql

安装后,确保它在php.ini. 确保您正在编辑正确的文件 - 您的网络服务器使用的文件。

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

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

  • 从命令行运行php -m,你应该看到pdo_mysql例如。

于 2009-04-07T11:34:08.953 回答
1

扩展目录中的 php_pdo_mysql.dll 可能正在尝试加载默认情况下位于 php 目录中的 libmysql.dll 或 mysql.dll(我认为 - 它们至少在我的 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。您可能会在我的 MySQL 安装程序安装的文件中找到这些 dll。

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

希望这可以帮助。

于 2009-04-07T12:23:46.417 回答
0

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

display_startup_errors = On
于 2009-04-07T09:18:03.320 回答
0

你在使用命令行吗?

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

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

于 2009-07-08T14:05:22.530 回答
0
  • 过去我遇到过问题,尽管 DLL 位于 php/ext/ 目录中并且尽管 php 路径设置正确,但我必须指定扩展的绝对路径。

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

于 2009-04-07T17:51:49.013 回答