dic 09 2010

Cada versión de php con su propio php.ini

Category: Windows,phpDavid González @ 20:29

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\)

Entradas relacionadas

Etiquetas: , ,


abr 01 2010

Copiar un archivo en todos los directorios con find

Category: LinuxDavid González @ 8:10

Ya vimos en otro post el uso del find y algunas de sus opciones.

La receta de hoy sirve para copiar un fichero en todos los directorios o carpetas de un site. Vamos a ver como sería:

find ruta -type d -exec cp -p fichero {} \;

Cuando he tenido que usar esta comando, principalmente, es en los casos en que he creado un php.ini en el public_html con una directiva. Como el php.ini sólo lo activa a nivel de directorio, es necesario tener uno en cada una de las carpetas donde también requerimos dicha directiva activa.

Esta directiva podría ser, por ejemplo:

register_globals=On;
memory_limit = 32M;
max_execution_time = 30
post_max_size = 8M;
include_path = ".:/home/tureceta/php";
upload_max_filesize = 2M;

De esta forma, copiaremos el fichero php.ini en todas la carpetas o directorios de nuestro alojamiento.

Estando en la home (/home/tureceta/public_html), usaremos el comando:

find . -type d -exec cp -p php.ini {} \;

Entradas relacionadas

Etiquetas: , , ,