FAQ
PHP Manual

Instalación

Esta sección contiene preguntas comunes sobre la forma de instalar PHP. PHP está disponible para casi cualquier OS (excepto para MacOS antes de OSX), y casi todos los servidores web.

Para instalar PHP, siga las instrucciones en Instalación y configuración.

  1. ¿Porqué Apache2 no debería ser utilizado con un MPM en un entorno de producción?
  2. Unix/Windows: ¿Donde debería ubicarse mi fichero php.ini?
  3. Unix: Instalé PHP, ¡pero con cada documento cargado recibo el mensaje 'Document Contains No Data'! ¿Qué está pasando aquí?
  4. Unix: Instalé PHP usando RPMS, ¡pero Apache no procesa los los documentos PHP! ¿Qué está sucediendo aquí?
  5. Unix: Apache fue parchado con el parche de extensiones de FrontPage, y de pronto PHP dejó de funcionar. ¿Acaso PHP es incompatible con las extensiones de FrontPage para Apache?
  6. Unix/Windows: Instalé PHP, pero cuando intento acceder a archivos PHP a través de mi navegador, obtengo la pantalla en blanco.
  7. Unix/Windows: Instalé PHP, pero cuando intento acceder a archivos PHP a través de mi navegador, obtengo el error de servidor HTTP 500.
  8. Varios sistemas operativos: Instalé PHP sin errores, pero cuando intento iniciar Apache, obtengo errores de símbolos indefinidos: [mybox:user /src/php5] root# apachectl configtest apachectl: /usr/local/apache/bin/httpd Undefined symbols: _compress _uncompress
  9. Windows: Instalé PHP, pero cuando intento acceder a archivos PHP a través de mi navegador, obtengo el error: cgi error: The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:
  10. Windows: Seguí todas las instrucciones, ¡pero todavía no puedo hacer que PHP y el IIS funcionen juntos!
  11. Cuando ejecuto PHP como CGI con IIS, PWS, OmniHTTPD o Xitami, obtengo el siguiente error: Security Alert! PHP CGI cannot be accessed directly..
  12. ¿Cómo tengo la certeza de que mi php.ini está siendo encontrado y correctamente leído? Pareciera que no porque mis cambios no están siendo implementados.
  13. ¿Cómo agrego mi directorio de PHP a PATH en Windows?
  14. ¿Cómo hago al archivo php.ini disponible para PHP en Windows?
  15. ¿Es posible usar la negociación de contenidos de Apache (opción MultiViews) con PHP?
  16. ¿PHP se limita a procesar sólo métodos de peticiones GET y POST?
¿Porqué Apache2 no debería ser utilizado con un MPM en un entorno de producción?

PHP es pegamento. Es el pegamento utilizado para desarrollar buenas aplicaciones web uniendo docenas de bibliotecas 3rd-party y haciéndolas aparentar como una coherente a través de una interfaz lingual, intuitiva y fácil de estudiar. La flexibilidad y poder de PHP reside en la estabilidad y robustez de la plataforma en la que corre. REquiere de un OS, de un servidor web y de bibliotecas 3rd-party (todos correctamente funcionando) para combinarlos. Cuando cualquiera de estos deja de funcionar, PHP necesita formas de identificar los problemas y arreglarlos rápidamente. Cuando el marco de referencia base se hace más complejo al no tener las tareas de ejecución y los segmentos de memoria completamente separados y un fuerte entorno de pruebas por cada instancia a cubrir, apareceran deficiencias en el sistema de PHP.

Si desea utilizar un MPM por hilos, considere una configuración de FastCGI donde PHP este corriendo en su propio espacio de memoria.

Unix/Windows: ¿Donde debería ubicarse mi fichero php.ini?

Por defecto en Unix debería ser en /usr/local/lib lo que es igual a <install-path>/lib. Mucha gente querrá cambia resto al momento de compilar con el flag --with-config-file-path. Debería ser seteado, por ejemplo, con algo parecido:

--with-config-file-path=/etc
Y luego se copiaría el php.ini-development de la distribución a /etc/php.ini y sería editado acorde a los cambios locales deseados.

--with-config-file-scan-dir=PATH

En Windows la ruta predeterminada para el fichero php.ini es el directorio Windows. Si está usando el servidor web Apache, php.ini es buscado en principio en el directorio de instalación de Apaches, por ej.C:\Archivos de programa\Apache Group\Apache. De esta forma se pueden utilizar distintos ficheros php.ini para diferentes versiones de Apache en la misma máquina.

Vea también el capítulo sobre el fichero de configuración.

Unix: Instalé PHP, ¡pero con cada documento cargado recibo el mensaje 'Document Contains No Data'! ¿Qué está pasando aquí?

Esto probablemente signifique que PHP está teniendo algún tipo de problema y realiza un volcado de memoria. Revise en el log de errores de su servidor para ver si éste es el caso, y después intente reproducir el problema con una pequeña prueba. Si sabe cómo usar 'gdb', será de gran ayuda cuando un backtrace pueda ser incluido en su reporte de bug para ayudar a los desarrolladores a localizar el problema. Si PHP es utilizado como módulo de Apache intente algo como:

  • Detener sus procesos httpd

  • gdb httpd

  • Detener sus procesos httpd

  • > Ejecute -X -f /path/to/httpd.conf

  • Luego indique la URL que causa el problema con su explorador

  • > Ejecute -X -f /path/to/httpd.conf

  • Si resulta en un volcado de memoria, gdb debería informárselo al instante

  • escriba: bt

  • Debería incluir su backtrace en su reporte de bug, el cual debería ser enviado a » http://bugs.php.net/

Si su script utiliza las funciones de expresiones regulares (preg_match() y similares), debería sersionarse que PHP y Apache fueron compilados con los mismos paquetes de expresiones regulares. Esto debería ocurrir automáticamente con PHP y Apache 1.3.x

Unix: Instalé PHP usando RPMS, ¡pero Apache no procesa los los documentos PHP! ¿Qué está sucediendo aquí?

Asumiendo que instaló tanto Apache como PHP desde paquetes RPM, se necesita descomentar, o agregar algunas o todas de las siguientes líneas en su fichero httpd.conf:

# Extra Modules
AddModule mod_php.c
AddModule mod_perl.c

# Extra Modules
LoadModule php_module         modules/mod_php.so
LoadModule php5_module        modules/libphp5.so
LoadModule perl_module        modules/libperl.so
Y agregar:
AddType application/x-httpd-php .php
... a las propiedades globales, o a las propiedades del VirtualDomain que desee que tenga añadido el soporte para PHP.

Unix: Apache fue parchado con el parche de extensiones de FrontPage, y de pronto PHP dejó de funcionar. ¿Acaso PHP es incompatible con las extensiones de FrontPage para Apache?

No, PHP trabaja bien con las extensiones de FrontPage. El problema radica en que dicho parche modifica varias estructuras de Apache en las que PHP confía. La recompilación de PHP (usando 'make clean ; make') luego de que el parche haya sido aplicado debería resolver el problema.

Unix/Windows: Instalé PHP, pero cuando intento acceder a archivos PHP a través de mi navegador, obtengo la pantalla en blanco.

Ejecute 'ver código fuente' en el navegador web y probablemente encontrará que puede ver el código fuente de su archivo PHP. Esto significa que el servidor web no envió el script PHP para su interpretación. Algo está mal en la configuración del servidor - chequéelo tantas veces sea necesario respecto de las instrucciones de instalación de PHP.

Unix/Windows: Instalé PHP, pero cuando intento acceder a archivos PHP a través de mi navegador, obtengo el error de servidor HTTP 500.

Algo falla cuando el servidor intenta ejecutar PHP. Para obtener un mensaje de error detallado, desde la línea de comandos, cambie al directorio que tiene el ejecutable de PHP (php.exe en Windows) y ejecute php -i. Si PHP tiene problemas al correr, el correspondiente error será impreso en pantalla, el cual le dará una pista sobre lo que debe hacer a continuación. Si obtiene una pantalla completa de códigos HTML (la salida de la función phpinfo()) es porque PHP está funcionando, y su problema puede estar relacionado a la configuración de su servidor, la cual debería corroborar.

Varios sistemas operativos: Instalé PHP sin errores, pero cuando intento iniciar Apache, obtengo errores de símbolos indefinidos:
[mybox:user /src/php5] root# apachectl configtest
 apachectl: /usr/local/apache/bin/httpd Undefined symbols:
  _compress
  _uncompress

Esto, en realidad, no tiene nada que ver con PHP, sino con las bibliotecas de cliente MySQL. Algunas necesitan --with-zlib , otras no. Esto también se trata en la FAQ de MySQL.

Windows: Instalé PHP, pero cuando intento acceder a archivos PHP a través de mi navegador, obtengo el error:
cgi error:
 The specified CGI application misbehaved by not
 returning a complete set of HTTP headers.
 The headers it did return are:

Este mensaje de error significa que PHP falló al intentar producir un retorno. Para poder ver un mensaje de error detallado, desde la línea de comandos, cambie al directorio que tiene el ejecutable de PHP (php.exe en Windows) y ejecute php -i. Si PHP tiene problemas al correr, el correspondiente error será impreso en pantalla, el cual le dará una pista sobre lo que debe hacer a continuación. Si obtiene una pantalla completa de códigos HTML (la salida de la función phpinfo()) es porque PHP está funcionando.

Una vez que PHP esté funcionando desde la línea de comandos, intente acceder al archivo PHP a través de su navegador nuevamente. Si continúa fallando podría ser por una de las siguientes razones:

  • Permisos de archivo en su script PHP, php.exe, php5ts.dll, php.ini o cualquier extensión PHP que esté intentando cargar son de tal que el usuario anónimo de internet ISUR_<machinename> no puede acceder a ellos.
  • El archivo no existe (o posiblememte no está donde cree, lo que es relativo a su directorio web raíz). Note que para IIS se puede tildar la casilla 'comprobar si el archivo existe' cuando setea el mapeo de scripts en el Administrador de Servicios de Internet para darse cuenta si eso es lo que realmente sucede. Si un archivo no existe, entonces el servidor devolverá un error HTTP 404. El IIS también brinda el beneficio adicional de encargarse de cualquier autenticación requerida por Ud., basado en los permisos NTLanMan en su archivo.
Windows: Seguí todas las instrucciones, ¡pero todavía no puedo hacer que PHP y el IIS funcionen juntos!

¡Asegúrese de que todos los usuarios que necesiten ejecutar PHP tengan los permisos para ejecutar php.exe! IIS utiliza un usuario anónimo que se crea en el momento en que éste es instalado. Este usuario necesita permisos para php.exe. Además, cualquier usuario autenticado necesitará permisos para poder ejecutar php.exe. Y para IIS4 se necesita indicarle que PHP es un intérprete. También le interesará leer esta FAQ.

Cuando ejecuto PHP como CGI con IIS, PWS, OmniHTTPD o Xitami, obtengo el siguiente error: Security Alert! PHP CGI cannot be accessed directly..

La directiva cgi.force_redirect debe equivaler a 0. Por defecto equivale a 1 por lo que debe asegurarse de que no este comentada (con un ;). Como todas las directivas, esto se configura en php.ini

Debido a que por defecto es 1, es crítico que esté seguro al 100% que se está leyendo el archivo php.ini correcto. Por favor lea esta FAQ para detalles.

¿Cómo tengo la certeza de que mi php.ini está siendo encontrado y correctamente leído? Pareciera que no porque mis cambios no están siendo implementados.

Para asegurarse que PHP está leyendo su php.ini, realice una llamada a phpinfo(). Cerca de la parte superior, habrá una lista llamada Configuration File (php.ini). Allí figurará en qué parte PHP está buscando php.ini y si se está leyendo o no. Si existe sólo el directorio de la ruta, entonces PHP no está leyéndolo, y debería moverlo dentro de dicho directorio. Si php.ini está incluido dentro de la ruta indicada, está siendo leído.

Si php.ini está siendo leído y PHP está corriendo como un módulo, entonces deberá reiniciar su servidor web luego de aplicar los cambios a php.ini

Vea también php_ini_loaded_file().

¿Cómo agrego mi directorio de PHP a PATH en Windows?

En Windows NT+ y Windows Server 2000+:

  • Vaya a Panel de Control y abra el icono Sistema (Inicio -> Configuración -> Panel de Control -> Sistema, o directamente Inicio -> Panel de Control -> Sistema para Windows XP/2003+)

  • Vaya a la pestaña Avanzado

  • Clic en el botón 'Variables de Entorno'

  • Revise la parte de 'Variables de Sistema'

  • Encuentre la entrada Path (de seguro tendrá que desplazarse para encontrarla)

  • Doble clic en la entrada Path

  • Ingrese su directorio de PHP al final de todo, con un ';' antes (por ej., ;C:\php)

  • Presione OK

En Windows 98/Me necesita editar el archivo autoexec.bat:

  • Abra el Bloc de Notas (Inicio -> Ejecutar y escriba notepad)

  • Abra el archivo C:\autoexec.bat

  • Localice la línea con PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;..... y agregue: ;C:\php en el final de la línea

  • Guarde el archivo y reinicie la máquina

Nota: Asegúrese de reiniciar luego de seguir los pasos de arriba para garantizar que los cambios a PATH se apliquen.

El manual de PHP solía promover el copiado de archivos dentro del directorio de sistema de Windows, esto es porque este directorio (C:\Windows, C:\WINNT, etc.) está por defecto en los sistemas de PATH. Copiar archivos dentro del directorio de sistema de Windows hace tiempo que ya no se utiliza y puede causar problemas.

¿Cómo hago al archivo php.ini disponible para PHP en Windows?

Hay varias formas de hacer esto. Si está usando Apache, lea sus instrucciones específicas de instalación (Apache 1, Apache 2), a menos que deba configurar la variable de entorno PHPRC:

En Windows NT, 2000, XP y 2003:

  • Vaya a Panel de Control y abra el icono Sistema (Inicio -> Configuración -> Panel de Control -> Sistema, o directamente Inicio -> Panel de Control -> Sistema para Windows XP/2003)

  • Vaya a la pestaña Avanzado

  • Clic en el botón 'Variables de Entorno'

  • Revise la parte de 'Variables de Sistema'

  • Clic en 'Nuevo' e ingrese 'PHPRC' como el nombre de variable y el directorio donde php.ini se encuentra como el valor de variable (por ej., C:\php)

  • Presione OK y reinicie la máquina

En Windows 98/Me necesita editar el archivo autoexec.bat:

  • Abra el Bloc de Notas (Inicio -> Ejecutar y escriba notepad)

  • Abra el archivo C:\autoexec.bat

  • Agregue una nueva línea al final del archivo: set PHPRC=C:\php (reemplace C:\php con el directorio donde se encuentre php.ini). Por favor note que la ruta no puede contener espacios. Por ejemplo, si instaló PHP en C:\Archivos de programa\PHP, debería ingresar C:\ARCHIV~1\PHP en su lugar.

  • Guarde el archivo y reinicie la máquina

¿Es posible usar la negociación de contenidos de Apache (opción MultiViews) con PHP?

Si los enlaces a archivos PHP incluyen la extensión, todo funciona perfectamente. Esta FAQ es sólo para aquellos casos en los que los enlaces a archivos PHP no incluyen la extensión y desea utilizar la negociación de contenidos para elegir archivos PHP desde una URL sin extensión. En este caso, reemplace la línea AddType application/x-httpd-php .php con:

AddHandler php5-script php
AddType text/html php
Esta solución no funciona para Apache 1 ya que el módulo de PHP no capta php-script.

¿PHP se limita a procesar sólo métodos de peticiones GET y POST?

No, es posible manejar cualquier método de peticiones, por, ej., CONNECT. El estado de respuesta apropiado puede ser enviado con header(). Si sólo los métodos GET y POST deberían ser manejados, se puede lograr con la siguiente configuración de Apache:

<LimitExcept GET POST>
Deny from all
</LimitExcept>


FAQ
PHP Manual