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.
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_dir
en 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...