PHP PDO扩展无法在IIS上运行

时间:2011-03-23 16:16:39

标签: php iis pdo

我有一个使用__autoload()来加载类的脚本(愚蠢的,我知道,这是我过去常用于娱乐/测试的旧代码),它似乎试图自动加载PDO。这让我相信它不应该找到PDO类。我已经检查了php.ini并启用了php_pdo.dll,以及php_pdo_mysql.dll等.dd文件中存在.dll文件,并且我已经多次重启Web服务器。

我对IIS没有多少经验,但我从来没有在Linux上遇到过这个问题,所以我不确定是什么问题。

非常感谢任何帮助。

编辑:PDO不在phpinfo()中。我知道它没有正确加载,我正在试图找出原因。这是我的php.ini文件:php.ini on Pasebin

C:\ Program Files(x86)\ PHP \ ext是扩展名目录,在php.ini和phpinfo()中列出。

6 个答案:

答案 0 :(得分:4)

我发现奇怪的一点是你在[PDO]部分指定了扩展名。我不知道这种表示法 - 我的Windows php.ini不会这样做。可能是该行被忽略,因为它被解释为PDO.extension这没有意义。

如果将extension=php_pdo.dll位移到INI文件的主体(任何[]部分之外),会发生什么?

如果这没有改变: 您是否100000确定您正在编辑正确的php.ini?

使用文件中指定的扩展名,PHP应该在重新启动服务器时崩溃,或者为您提供PDO类。

检查phpinfo()以查看正确使用的ini文件。

答案 1 :(得分:2)

我相信你已经做了以下大部分/全部事情,但这就是我要做的事情:

1:查看IIS错误日志,看看它是否报告任何问题(我暂时没有使用IIS,但我确定某处有错误日志文件)

2:确保通过phpinfo()

中的交叉检查加载其他.dll文件

3:注释掉所有扩展名,如php_mbstring.dll,gd2等,看看是否反映在phpinfo()中,然后逐个启动。

4:删除底部的所有部分,只需将扩展名放在ini的动态扩展部分。

之类的东西
extension=php_abc.dll
extension=php_xyz.dll
extension=php_123.dll

5:我一直不太喜欢在目录名中有空格,所以我会将ext文件夹复制到c的某个地方进行测试,可能就像c:\ phpexts

6:我会使用相同的php.ini并在apache(相同的php版本)中创建一个类似的环境,看看它是否有效或反过来将php.ini从Apache移植到IIS。

答案 2 :(得分:0)

尝试打开cmd并输入C:\Program Files (x86)\PHP\bin\php -r ""

您收到错误消息吗?如果有,那是什么?

确保您对IIS使用的Visual C++版本具有正确的扩展名。

如果不是,请取出该目录并将其移至C:\。它可能与路径中的空间有关。调整IIS配置,然后重试。

祝你好运!

答案 3 :(得分:0)

刚出现这个问题,请检查dll文件的权限,为我做了诀窍。

答案 4 :(得分:0)

我们遇到了同样的问题,只需检查[WebPIChanges]

中的变量extension_dir

答案 5 :(得分:0)

请看这个答案: this answer 最后,您需要在扩展中安装 php_sqlsrv_7_nts_x86.dll。

您可以从here

下载