PDO驱动程序在Windows中没有任何价值

时间:2011-08-17 00:55:32

标签: php windows

无法在计算机中启用php_pdo_mysql.dll。我在php.ini中设置了extension=php_pdo.dllextension=php_pdo_mysql.dll,但是当我选中phpinfo()时,项 PDO驱动程序 没有值

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

怎么了?

16 个答案:

答案 0 :(得分:60)

当我升级到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"

答案 1 :(得分:9)

尝试以下操作:在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"

答案 2 :(得分:7)

在控制台中尝试php -m,它将显示PHP的启动错误。

答案 3 :(得分:6)

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

PHPIniDir "C:\php\"

PHPIniDir "C:/php/"

... GUH。

答案 4 :(得分:4)

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

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

答案 5 :(得分:2)

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

答案 6 :(得分:2)

我在使用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]排在第一位。我猜申报单很重要!

答案 7 :(得分:2)

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

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

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

答案 8 :(得分:2)

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

extension_dir =&#34;分机&#34; 不适合我,

绝对路径: extension_dir =&#34; C:\ DEV \ PHP71 \ ext \&#34; 运作良好

答案 9 :(得分:1)

我遇到了同样的问题,直到我读到以下内容才感到难过:

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

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

对于遇到此问题的人,我建议采取以下行动: 1)检查以确保加载的配置文件是您认为的位置(即,Apache没有使用某些默认的php.ini) - phpinfo()将提供此答案 2)检查以确保所有所需的扩展名都位于php \ ext文件夹中并包含在php.ini文件中(大多数常用扩展只需要取消注释) 3)尝试加载pdo_sqllite。如果在重新启动Apache之后在phpinfo()中出现这种情况,那么您已经将问题缩小到Apache无法加载必要的mysql扩展。 4)按照上面链接中的说明进行操作。

答案 10 :(得分:1)

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

  1. 打开IIS(我通常在启动时输入IIS打开它); Start IIS

  2. 双击“PHP Manager”; Click PHP Manager

  3. 点击“启用或停用扩展程序”; Enable/Disable extension

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

  5. 之后,司机应该出现并开始工作。 Enabled driver

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

答案 11 :(得分:1)

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

extension=php_pdo_mysql.dll

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

相同
extension=php_mysql.dll

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

啤酒花有帮助..

答案 12 :(得分:0)

我在这里得到了提示:

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目录中移动东西。

答案 13 :(得分:0)

我也有这个问题。我在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。

答案 14 :(得分:0)

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

答案 15 :(得分:0)

PHP错误PDO上不存在PDO

致命错误:Class&#39; DigitalToolBox \ PDO&#39;在第19行的C:\ SERVER \ www \ MyAPP \ DigitalToolBox \ MysqlConnectionTool.php中找不到

你可以看到pdo被加载了,因为列表中有这个命令:

print_r(get_loaded_extensions()); 

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

use PDO;

IF($ this-&gt;有效)  $ voteForThis ++;