我使用的是 Windows 10,已安装 Apache2.4、PHP7.2 和 MySQL。安装 pdo_mysql 驱动程序时遇到问题
我已经编辑了我的 php.ini 文件,并且在扩展部分我有:
extension=pdo_mysql
我还将 extension_dir 指令设置为:
"C:\php72\ext"
在命令控制台中我输入“php -m”并且可以看到列出了 PDO 和 pdo_mysql。
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_dir
php.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 文件...