Bueno, después de un tiempo de parón, vamos a ver si retomamos el blog. En un servidor windows, bajo IIS, podemos tener dos versiones de php (cada una en su carpeta, php4 y php5) y añadiendo las extensiones en el administrador de Internet Information Services (IIS) nos funcionará sin problemas.
Sabiendo esto, voy a exponer mi caso. Por requisito de un cliente, mi compañero sysadmin y yo, tuvimos que instalar Zend Optimizer (con un .exe siguiente, siguiente…). Una vez instalado, con un phpinfo vimos que los que tenían configurado la versión 5 de php, mostraba la información correctamente. Hasta aquí, perfecto.
El caso es que los dominios que tenían configurado el php4, dejaron de funcionar, mostrando este error por pantalla “La aplicación CGI especificada puede comportarse de forma anormal si no recibe un conjunto completo de encabezados HTTP.” Este error aparecía simplemente con un phpinfo. El error es bastante genérico y no permite acotar el problema y por tanto buscar la solución es más complicado.
Intentamos mediante la consola de windows (CMD) ejecutar el php pero mostraba tantos errores que no era posible encontrar nada útil. Entonces se nos ocurrió, ejecutar el phpinfo desde la consola, pero volcándolo en un fichero de esta forma.
c:\PHP\php.exe phpinfo.php > volcar.txt
Entonces, vimos la clave del problema en esta línea “Configuration File (php.ini) Path C:\XXX\php.ini“. Estaba cargando en la versión 4 de php, el php.ini que había en la carpeta de php5 y claro, daba errores por todo.
La solución era poder configurar el php de tal forma que cada versión de php tuviera su propio php.ini y no tuvieran problemas. La receta de hoy es como solucionar esto.
Para ello, debemos editar el registro. Para abrirlo, debemos ir a INICIO/EJECUTAR/ y escribir regedit.exe. En primero lugar, como prevención, sería recomendable hacer un backup. Simplemente pestaña Archivo/exportar y lo guardamos. Una vez hecho el backup, vamos a modificar el registro. Lo que haremos, es crear una entrada para cada versión de php con su propio path para el php.ini.
Tenemos que crear una nueva clave en HKEY_LOCAL_MACHINE\SOFTWARE\ llamada PHP. Una vez dentro de esta “clave/carpeta” que hemos llamado PHP, una nueva clave para cada versión de php, por ejemplo 4.4.9, 5.2.11 y por último dentro de cada “clave/carpeta” con el nombre de la versión de php, un “valor alfanumérico” con nombre “IniFilePath” y “valor” la ruta donde se encuentra su php.ini (por ejemplo c:\PHP\ o c:\windows\)
