无法让 Apache 找到 PDO 驱动程序

无法让 Apache 找到 PDO 驱动程序

我使用的是 Windows 10,已安装 Apache2.4、PHP7.2 和 MySQL。安装 pdo_mysql 驱动程序时遇到问题

我已经编辑了我的 php.ini 文件,并且在扩展部分我有:

extension=pdo_mysql

我还将 extension_dir 指令设置为:

"C:\php72\ext"

在命令控制台中我输入“php -m”并且可以看到列出了 PDO 和 pdo_mysql。

命令控制台截图显示 php -m

print_r(PDO::getAvailableDrivers());我已经重新启动了 Apache,但是当我运行包含或的 .php 文件时,phpinfo(); 我发现我没有为 PDO 安装任何驱动程序。

在我的 httpd.conf 文件中我有

PHPIniDir “C:\php72\”

我尝试过将其更改为使用正斜杠和反斜杠,并添加和删除尾部斜杠,每次更改后重新启动 Apache。但我仍然无法加载 pdo_mysql 驱动程序。

在我看来,问题出在 Apache 而不是 PHP 上(因为当我在命令控制台中运行 php -m 时,会出现 pdo_mysql 模块),但我不明白我做错了什么。我搜索了其他遇到同样问题的人,但解决方案似乎总是 PHPIniDir,我认为我已经正确设置了它。

我使用的机器已经在运行 IIS,所以我让 Apache 监听端口 8090,而不是默认端口。我不确定这是否相关。

任何帮助,将不胜感激!

答案1

我卸载了 Apache 服务,删除了 C:\Apache24 并从头开始安装,然后按照之前的步骤安装 pdo_mysql,效果很好。

答案2

我遇到了同样的问题,通过 cli 运行时会加载模块,但通过 Apache 运行相同的 php 配置时不会加载。

就我而言,解决方案是将extension_dirphp.ini 文件中的设置为模块文件夹的绝对路径(就我而言为 C:\php80\ext)。

现在 cli 和 Apache 都正确加载模块。

答案3

对于我来说,我遵循的关于使用 Apache 设置快速 CGI 的愚蠢说明让我将 exe 文件放在了 ini 文件应该去的地方。

# Where is your php.ini file?
FcgidInitialEnv PHPRC "c:/Program Files/php/php.exe" // should be ini

我将其更改为 ini,它起作用了。我很惊讶 php 允许我将 php.exe 设置为 ini 文件...

相关内容