No se puede hacer que Apache encuentre el controlador PDO

No se puede hacer que Apache encuentre el controlador PDO

Estoy usando Windows 10 y he instalado Apache2.4, PHP7.2 y MySQL. Tengo problemas para instalar el controlador pdo_mysql

He editado mi archivo php.ini y en la sección de extensiones tengo:

extension=pdo_mysql

También configuré la directiva extension_dir en:

"C:\php72\ext"

En la consola de comandos ingreso "php -m" y puedo ver PDO y pdo_mysql en la lista.

Captura de pantalla de la consola de comandos que muestra php -m

Reinicié Apache pero cuando ejecuto un archivo .php que incluye print_r(PDO::getAvailableDrivers());o phpinfo(); puedo ver que no tengo ningún controlador instalado para PDO.

En mi archivo httpd.conf tengo

PHPIniDir “C:\php72\”

Intenté cambiar esto para usar barras diagonales y inversas, e incluir y eliminar la barra diagonal, reiniciando Apache después de cada cambio. Todavía no puedo cargar el controlador pdo_mysql.

Me parece que el problema es de Apache no de PHP (ya que me aparece el módulo pdo_mysql cuando ejecuto php -m en la consola de comandos), pero no entiendo qué he hecho mal. Busqué otras personas que tuvieran el mismo problema pero la solución siempre pareció ser PHPIniDir, que creo que configuré correctamente.

La máquina que estoy usando ya ejecutaba IIS, por lo que Apache escucha el puerto 8090, en lugar del predeterminado. No estoy seguro de si esto es relevante o no.

¡Cualquier ayuda sería apreciada!

Respuesta1

Desinstalé el servicio Apache, eliminé C:\Apache24 y lo instalé desde cero, seguí los pasos para instalar pdo_mysql como antes, lo cual funcionó.

Respuesta2

Tuve el mismo problema, donde los módulos se cargaban cuando se ejecutaban a través de cli, pero no cuando se ejecutaba la misma configuración de php a través de Apache.

En mi caso, la solución fue configurar extension_diren el archivo php.ini la ruta absoluta de la carpeta de módulos (C:\php80\ext en mi caso).

Ahora tanto cli como Apache están cargando los módulos correctamente.

Respuesta3

Para mí, las estúpidas instrucciones que estaba siguiendo para configurar Fast CGI con Apache me hicieron colocar el archivo exe donde se suponía que debía ir el archivo ini.

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

Lo cambié al ini y funcionó. Me sorprende que php me permita configurar php.exe como archivo ini...

información relacionada