我有一个使用__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()
中列出。
答案 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
下载