【问题标题】:checked the php.ini file "extension=php_pdo_mysql.dll" enabled but still error [closed]检查启用的 php.ini 文件“extension=php_pdo_mysql.dll”但仍然错误[关闭]
【发布时间】:2023-03-04 14:11:01
【问题描述】:

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

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

谢谢

【问题讨论】:

  • 首先你应该发布导致问题的代码。
  • 好吧,我是 symfony 的新手,我所做的只是 php symfony propel-generate-crud 前端发布帖子并尝试打开 localhost/sf_sandbox/web/frontend_dev.php/post
  • 检查你的 [phpinst]/ext 目录中是否有 php_pdo_mysql.dll
  • 运行 php --ini 并查看是否缺少扩展名。如果是这样,请打开您的php.ini 并查看扩展的路径是否正确。寻找extension_dir

标签: php open-source symfony1


【解决方案1】:
  • 找出您实际需要的 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,它会安装 mysqlmysqlipdo_mysql 扩展。

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

之后,验证扩展是否正确加载:

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

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

【讨论】:

    【解决方案2】:

    扩展目录中的 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。如果没有,也许它在启动时报告了一些其他错误。从日志中发布任何错误可能有助于诊断。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

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

      display_startup_errors = On
      

      【讨论】:

        【解决方案4】:
        • 过去我遇到过一些问题,尽管 DLL 位于 php/ext/ 目录中并且尽管 php 路径设置正确,但我必须指定扩展的绝对路径。

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

        【讨论】:

          【解决方案5】:

          你在使用命令行吗?

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-08-03
            • 2013-04-03
            • 2020-01-01
            • 2020-01-24
            • 1970-01-01
            • 1970-01-01
            • 2012-08-22
            相关资源
            最近更新 更多