PHP y su configuración

Publicado por Kentaurus en el blog Rigel Kentaurus. Vistas: 39

Ayer en la noche estabamos trabajando Viktor y yo con, por supuesto, CemZoo en uno de esos proyectos ultra-secretos que no puedo ni siquiera comentar en mi blog porque ... pues... son demasiado secretos.

No se cuanto tiempo tenga desde que instalamos PHP, pienso yo que bastante. El archivo de configuración lo hemos venido arrastrando desde entonces, actualizándolo para hacer algunos tunnings (como el hecho de que php 5 requiere un máximo de memoria de 32-64Mb cuando php4 se conformaba con 16), y algunos permisos de librerías. Pero realmente no lo hemos comenzado "desde 0", esto es, no hemos hecho una instalación "en blanco" de PHP.

Y la verdad, es que todo funciona muy bien, pero a veces uno se encuentra con sorpresas.

Como por ejemplo esto:

Código:
include_once("secreto.php");
Una línea inocente que daba como resultado:
Código:
Error al incluir secreto.php en index.php, vaya a su casa a llorar
(ok, no decía nada de retirarse a llorar, pero entienden ustedes la idea)

Por supuesto, un agravante más es lo siguiente, una línea más arriba:

Código:
print_r(is_file("secreto.php"));
y, ¿que imprime? por supuesto:

true

La reacción inmediata ante eso es aaaaarggghghhhhh! (imagínense el grito de desesperación, mientras te arrancas unos cuantos cabellos, seguido de azotar la cabeza contra el escritorio a ritmo de "¿por qué? ¿por qué? ¿por qué?"

Por supuesto, este tipo de errores, además de absurdos e ilógicos... llevan un par de horas depurar.

Algun día a los desarrolladores de php se les ocurrio que el include solamente debía buscar en el INCLUDE_PATH, esto quiere decir que si uno usa el código que puse anteriormente, NUNCA va a buscar en el directorio actual, solamente en el include_path, que generalmente es "php/lib".

Una solución rápida, desde el punto de vista desarrollador es cambiar el código a:

Código:
include_once("./secreto.php");
¡y listo! con eso comienza a funcionar sin problemas. Pero para ser justos, ¿realmente sería correcto? Recorrer algunos cuantos miles de líneas de código buscando todos los includes... no.. no tenía sentido. Debía haber alguna forma de hacerlo funcionar sin tener que hacer ese tipo de cambios drásticos y casi de artillería pesada.

Y no.. no me vengan con "escribir un programa que lo haga por ti". ¡no!

Así que... ¿mi solución? Por supuesto, después de identificar que el culpable era el include_path, fue cambiar la configuración de php hacia:

Código:
INCLUDE_PATH="."
Vaya... así es la vida de los desarrolladores, ¿cuál fue el resultado de 2 horas de trabajo? UNA LÍNEA. Si, una línea.

Por supuesto que, (tocando madera), todo funcionó lindo después de eso, salvo otros 50 errores con que se haya topado Viktor a los cuáles ya no pude quedarme por preferir dormir.

¡Pero como nos divertimos!
  • Wakarimasen
  • KiBou
  • Kraderif
  • Uriel
  • Vicentico
  • Daniel
  • Viktor
Necesitas tener sesión iniciada para dejar un comentario