Я использую Windows 10 и установил Apache2.4, PHP7.2 и MySQL. У меня возникли проблемы с установкой драйвера для pdo_mysql
Я отредактировал файл php.ini, и в разделе расширений у меня есть:
extension=pdo_mysql
Я также установил директиву extension_dir следующим образом:
"C:\php72\ext"
В командной консоли я ввожу «php -m» и вижу в списке PDO и pdo_mysql.
Я перезапустил Apache, но когда я запускаю файл .php, включающий или print_r(PDO::getAvailableDrivers());
, phpinfo();
я вижу, что у меня не установлены драйверы для PDO.
В моем файле httpd.conf есть
PHPIniDir “C:\php72\”
Я пробовал изменить это, чтобы использовать прямые и обратные слеши, а также включать и удалять конечный слеш, перезапуская Apache после каждого изменения. Я все еще не могу загрузить драйвер pdo_mysql.
Мне кажется, что проблема в Apache, а не в PHP (поскольку модуль pdo_mysql появляется, когда я запускаю php -m в командной консоли), но я не понимаю, что я сделал не так. Я искал других людей, у которых была такая же проблема, но решение всегда было в PHPIniDir, который, как я думаю, я установил правильно.
На машине, которую я использую, уже запущен IIS, поэтому Apache прослушивает порт 8090, а не порт по умолчанию. Я не уверен, относится ли это к делу или нет.
Любая помощь будет оценена по достоинству!
решение1
Я удалил службу Apache, удалил C:\Apache24 и установил с нуля, затем выполнил шаги по установке pdo_mysql, как и раньше, и это сработало.
решение2
У меня была такая же проблема: модули загружались при запуске через cli, но не загружались при запуске той же конфигурации PHP через Apache.
В моем случае решением было указать extension_dir
в файле php.ini абсолютный путь к папке модулей (в моем случае C:\php80\ext).
Теперь и cli, и Apache загружают модули правильно.
решение3
Для меня глупые инструкции, которым я следовал при настройке Fast CGI с Apache, заставляли меня поместить exe-файл туда, где должен был находиться ini-файл.
# Where is your php.ini file?
FcgidInitialEnv PHPRC "c:/Program Files/php/php.exe" // should be ini
Я изменил его на ini и это сработало. Я удивлен, что php позволил мне установить php.exe как ini-файл...