【问题标题】:PDO drivers no value in WindowsPDO 驱动程序在 Windows 中没有价值
【发布时间】:2011-10-28 13:09:49
【问题描述】:

无法在机器中启用php_pdo_mysql.dll。我在 php.ini 中设置了extension=php_pdo.dllextension=php_pdo_mysql.dll,但是当我检查phpinfo() 时,PDO 驱动程序 项是no value

而且我在 phpinfo() 中找不到 mysql 信息,但我已启用 extension=php_mysql.dll

怎么了?

【问题讨论】:

  • 你真的有这个dll吗?
  • 是的,我可以在“ext”文件夹中找到 php_pdo_mysql.dll 文件
  • 很傻,但你记得重启你的服务器,对吧?
  • 我已经多次重启apache
  • @HardyLim 你能解决这个问题吗?我从 5.3.2 更新到 5.4.6 后就开始遇到它了...

标签: php windows


【解决方案1】:

当我升级到 PHP 5.4 时,我遇到了同样的问题。我有

extension_dir = "ext"

在 php.ini 和 php -m 中启动正常并报告它加载了 pdo_mysql,但是当我通过 apache 运行 phpinfo.php 时,驱动程序丢失了。

我通过将extension_dir 更改为绝对路径来修复它。我猜它在通过 Apache 运行并使其与其他东西相关时会感到困惑。

; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
extension_dir = "D:/php-5.4.11-Win32-VC9-x86/ext"

【讨论】:

  • 我买了一台新电脑并安装了 Windows 7 Ultimate 64 位。 Apache、PHP 和 MySQL 也是 64 位的。我的回答在这种环境下不起作用(使用相对路径),但 takteek 的回答确实有效!
  • 花了几个小时寻找解决方案,每个站点/帖子都说要检查相同的设置。一遍又一遍地检查一切。然后出现一个 takteek 并提供实际解决问题的解决方案。谢谢你。 +1
  • 这个解决方案仍然对我有用。我在 PHP 5.6.32 遇到了同样的问题
  • 在 php.ini 中使用绝对扩展 dir 为在 apache 下运行的版本对我有用 (extension_dir = "C:/Programs/php/php-7.4.9-Win32-vc15-x64/ext"而不是 extension_dir = "ext")
【解决方案2】:

尝试以下操作:在 php.ini 中查找并取消注释 extension_dir = "ext"

; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
 extension_dir = "ext"

【讨论】:

  • 考虑到这一点:也许我的答案适用于 Windows XP 32 位环境。我自己的答案在 Windows 7 64 位环境中对我不起作用
  • 拯救了我的一天!谢谢!
  • @TahirYasin 很高兴它有帮助!
  • 对于其他苦苦挣扎的人 - 事实证明我需要一个绝对路径才能让它在 Windows 10 上运行。
  • 普通的旧“ext”在 64 上工作正常,但 Windows 10
【解决方案3】:

在控制台试试php -m,会显示PHP的启动错误。

【讨论】:

    【解决方案4】:

    在 Windows Server 2012、Apache 2.4、php 5.4 安装上,在尝试了所有其他方法之后,改变了这个工作......

    PHPIniDir "C:\php\"
    

    PHPIniDir "C:/php/"
    

    ...嗯。

    【讨论】:

    • 它适用于我,因为我在 c:/php/ 中缺少最后一个“/”
    • 这对我也适用于 Win 8.1 x64、Apache 2.4.37、PHP5.6.39
    • 只是尾随的“\”是我们在 Win10、64 位、PHP7.3 上的情况的罪魁祸首
    【解决方案5】:

    在带有 apache 2.4 x64 的 Windows 上的 PHP 7.1 x64 中:

    extension_dir = "ext" 不适合我,

    绝对路径: extension_dir = "C:\DEV\PHP71\ext\" 效果很好

    【讨论】:

    • 请解释你的答案代码只有答案没有多大帮助。
    • 你想要什么代码?这是 php.ini 文件中的设置,当我在我的 Windows 机器上将 extension_dir 值设置为“ext”时,没有加载 ext,直到我将值更改为我的 PHP ext dir 的绝对路径,例如C:\DEV\PHP71\ext
    【解决方案6】:

    检查 phpinfo() 以确保 php.ini 的路径与设置的路径相同。在 Windows 机器上,创建多个 php.ini 实例并导致混淆是很常见的。

    此外,从命令行调用 php 会给您一条错误消息,其中包含有关它可能无法加载的原因的更多详细信息。您尝试包含的扩展可能与您的 PHP 安装不兼容。即它是具有线程安全二进制文件的非线程安全 dll,或者在同时使用 vc9 和 vc6 的地方存在编译器不匹配。

    【讨论】:

      【解决方案7】:

      更改php.ini配置后,需要在windows服务中重启Appche服务器。然后将加载扩展模块。使用以下代码进行测试:<?php print_r(get_loaded_extensions());?>

      【讨论】:

        【解决方案8】:

        PDO 驱动程序没有价值 - 您的 dll 条目无法在 php.ini 文件中排序。检查 dll 扩展条目列表。

        extension=php_pdo_mysql.dll
        

        条目必须放在所有 pdo 条目旁边。一样

        extension=php_mysql.dll
        

        条目必须放在所有没有 pdo 条目的旁边。

        啤酒花有帮助..

        【讨论】:

          【解决方案9】:

          我在使用 IIS 的 Windows 上遇到了这个问题。我的 php.ini 包含以下部分:

          [PHP_PDO_MYSQL]
          extension=php_pdo_mysql.dll
          [PHP_PDO]
          extension=php_pdo.dll
          

          我只是拿了[PHP_PDO_MYSQL][PHP_PDO] 部分,并交换了它们的位置,所以[PHP_PDO] 排在第一位。我想声明顺序很重要!

          【讨论】:

            【解决方案10】:

            米海在2012年的评论说:“在控制台尝试php -m,它会显示PHP的启动错误。”这个建议被证明是最有帮助的。如果 php.ini 文件中有任何错误,Windows PHP 管理器 (IIS 8) 并不太清楚 php.ini 出了什么问题。

            转到命令提示符并在提示符处键入php -m。弹出消息(警报)将让您知道任何错误,并为这些问题提供行号。在大多数情况下,我唯一的问题是我在一些不应该这样做的 php.ini 行上取消了注释(删除了分号)。

            另一个对我有用的提示是输入扩展文件夹的完整路径(请参阅 Jeremy Prine 上面的评论),这有助于“缺少 dll”消息开始在警报框中弹出。

            【讨论】:

              【解决方案11】:

              我在这里得到了提示:

              http://wiki.cementhorizon.com/display/CH/Solution+-+Unable+to+load+dynamic+library+C+php+ext+php_mysql.dll+-+the+specified+module+could+not+be+found

              我确保将c:/php 设置为 PATH 变量,然后将相应的 dll 移动到c:/php 目录(来自c:/php/ext 目录)。

              现在一切都对我有用,尽管我对在 php 目录中移动东西并不完全满意。

              【讨论】:

                【解决方案12】:

                我遇到了同样的问题,直到我读到以下内容时才被难住:

                http://www.artfulsoftware.com/php_mysql_win.html

                我正在运行 PHP 5.2 和 Apache 2.2。我的解决方法是将 libmysql.dll 文件复制到我的 Apache bin 目录中。

                我会向遇到此问题的任何人推荐以下行动方案: 1) 检查以确保加载的配置文件在您认为的位置(即 Apache 没有使用一些默认的 php.ini) - phpinfo() 将提供答案 2) 检查以确保所有需要的扩展都位于 php\ext 文件夹中并包含在 php.ini 文件中(最流行的扩展只需取消注释) 3) 尝试加载 pdo_sqllite。如果这在重新启动 Apache 后出现在 phpinfo() 中,则您已将问题缩小到 Apache 无法加载必要的 mysql 扩展。 4) 按照上面链接中的说明进行操作。

                【讨论】:

                  【解决方案13】:

                  如果您在 IIS 中使用 PHP Manager,请执行以下操作:

                  1. 打开 IIS(我通常在开始时输入 IIS 来打开它);

                  2. 双击“PHP 管理器”;

                  3. 点击“启用或禁用扩展”;

                  4. 向下滚动以找到您选择的驱动程序(在我的情况下为php_pdo_mysqll.dll),然后单击“启用”;

                  5. 之后,驱动程序应出现并开始工作。

                  6. 完成!希望这对某人有所帮助,因为其他答案对我不起作用。

                  【讨论】:

                    【解决方案14】:

                    我也有这个问题。我在 Windows 7 机器上有 Apache/2.2.22 (Win32) PHP/5.3.23。我的解决方案是将 php.ini 文件中的 extension_dir = C:\Program Files (x86)\PHP\ext 更改为 extension_dir = "C:\Program Files (x86)\PHP\ext"。它只需要添加引号。

                    我还将 php 目录添加到 CLASSPATH 中。

                    【讨论】:

                      【解决方案15】:

                      检查 pdo*.dll 文件是否在 OS 目录中的适当位置,检查这些文件的引用是否在 php.ini 中启用,检查您的 dbconnection 字符串是否正确,重新启动 apache

                      【讨论】:

                        【解决方案16】:

                        PHP 错误 PDO 在 5.4 上不存在

                        致命错误:在第 19 行的 C:\SERVER\www\MyAPP\DigitalToolBox\MysqlConnectionTool.php 中找不到类“DigitalToolBox\PDO”

                        您可以看到 pdo 已加载,因为它在使用此命令的列表中:

                        print_r(get_loaded_extensions()); 
                        

                        这个使用命名空间发生错误,我们需要在代码的开头添加指令:

                        use PDO;
                        

                        IF ($this->works) $voteForThis++;

                        【讨论】:

                          【解决方案17】:

                          经过大量搜索,我发现了我的问题。 在 php.ini 中,扩展目录是错误的。 检查斜线方向。 它应该是反斜杠,如下行所示。 extension_dir = "C:\wamp\bin\php\php8.0.10\ext"

                          不正确: extension_dir = "C:/wamp/bin/php/php8.0.10/ext"

                          在 wampserver 中也检查 phpForApache.ini 是否存在相同的问题。

                          【讨论】:

                            【解决方案18】:

                            1.在 php.ini 中,删除 etxnesion dir 变量中目录周围的“。它可能看起来像这样:

                            extension_dir = c:\PHP\ext

                            1. 将编辑好的ini文件(php.ini)复制到C:\windows目录

                            然后重新启动应用程序!

                            完成!

                            【讨论】:

                              猜你喜欢
                              • 2017-04-20
                              • 2013-06-17
                              • 2015-02-22
                              • 2016-12-04
                              • 1970-01-01
                              • 2016-03-26
                              • 2016-03-16
                              • 1970-01-01
                              • 1970-01-01
                              相关资源
                              最近更新 更多