El fichero de configuración de Apache es el archivo httpd.conf. En Windows este archivo se encuentra normalmente en Apache2/conf. En PHPHome se encuentra en C:\Archivos de programa\PHP Home Edition 2\Apache2\conf.
En el archivo httpd.conf se establecen las directivas de configuración de Apache, algunas de las cuales se comentan a continuación.
La directiva DcoumentRoot especifica el directorio donde se encuentran las páginas web. Cuando en la barra de dirección se escriba una dirección que comience por localhost/, el servidor buscará los archivos a partir de ese directorio.
En PHPHome la directiva es
DocumentRoot "C:\www"
por lo que el directorio raíz para localhost es C:\www.
La directiva UserDir especifica el directorio donde se encuentran las páginas web de cada usuario, dentro de su propio directorio (en Windows C:\Documents and Settings\Usuario), lo que permite que cada usuario tenga sus páginas en su propio directorio.
Por ejemplo, si la directiva es
UserDir "Mis Documentos/Web"
cada usuario puede guardar sus páginas en el directorio Web dentro de Mis Documentos. Cuando en la barra de dirección se escriba una dirección que comience por localhost/~Usuario, el servidor buscará los archivos a partir de ese directorio.
Para que Apache pueda acceder a los directorios de los usuarios, debe estar cargado el módulo userdir mediante la directiva:
LoadModule userdir_module modules/mod_userdir.so
El archivo de configuración de PHP es el archivo php.ini. En Windows este archivo se encuentra normalmente en C:\Windows. En el archivo php.ini se establecen las directivas de configuración de PHP, algunas de las cuales se comentan a continuación. Las principales directivas se comentan en el manual de PHP.
En un archivo que contiene fragmentos de código PHP, estos se identifican mediante las etiquetas <?php .... ?>. La directiva short_open_tag especifica si también se admiten las etiqueta <? ... ?>.
short_open_tag = On | Se admite el uso de <? ... ?> |
short_open_tag = Off | No se admite el uso de <? ... ?> |
Se recomienda que esta directiva tome el valor Off y que se utilice siempre la etiqueta <?php para empezar los fragmentos de código php.
Si en el servidor la directiva toma el valor On, las páginas XHTML que contengan una declaración XML (por ejemplo, <?xml version="1.0" encoding="iso-8859-1"?>) producirán un error. Este problema se resuelve utilizando un fragmento de código para generar la declaración XML.
<?xml version="1.0" encoding="iso-8859-1"?> | Parse error: parse error, unexpected T_STRING in ejemplo.php on line 1 |
<?php print "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n"; ?> |
La directiva register_globals especifica si las variables EGPCS (Entorno, GET, POST, Cookies y Servidor) se registran automáticamente como variables globales.
register_globals = On | Las variables EGPCS se registran como variables globales |
register_globals = Off | Las variables EGPCS no se registran como variables globales |
Por motivos de seguridad, se recomienda que esta directiva tome el valor Off.
En versiones antiguas de PHP (o si la directiva register_globals toma el valor On), las variables EGPCS eran variables globales, por lo que se podían llamar directamente.
Por ejemplo, si un formulario tiene un control con nombre "prueba" y se envía con el valor "Hola", el documento PHP que lo recibe puede utilizar la variable $prueba directamente.
<?php print "$prueba"; ?> | Hola |
Sin embargo, cuando la directiva register_globals toma el valor Off, se produce el aviso siguiente:
<?php print "$prueba"; ?> | Notice: Undefined variable: prueba in ejemplo.phpon line 1 |
Una forma correcta de acceder al dato recibido es a través de la matriz $_REQUEST:
<?php print "$_REQUEST[prueba]"; ?> | Hola |
La directiva error_reporting especifica el tipo de errores notificados por PHP.
Tipo de error | Descripción |
---|---|
E_ALL | Todos los errores y avisos |
E_ERROR | Errores fatales detectados en tiempo de ejecución |
E_WARNING | Advertencias (errores no fatales) detectados en tiempo de ejecución. |
E_PARSE | Errores de sintaxis detectados en tiempo de compilación. |
E_NOTICE | Avisos detectados en tiempo de ejecución (pueden deberse a errores involuntarios o a errores intencionados, por ejemplo, utilizar una variable no inicializada, pero utilizarla teniendo en cuenta que se inicializará automáticamente a una cadena vacía) |
E_STRICT | Avisos detectados en tiempo de ejecución, al activarlos PHP sugiere
cambios en el código para que una mejor interoperabilidad y
compatibilidad en el futuro. |
E_CORE_ERROR | Errores fatales detectados durante el arranque inicial de PHP. |
E_CORE_WARNING | Advertencias (errores no fatales) detectados durante el arranque inicial de PHP. |
E_COMPILE_ERROR | Erores fatales detectados en tiempo de compilación. |
E_COMPILE_WARNING | Advertencias (errores no fatales) detectados en tiempo de compilación. |
E_USER_ERROR | Mensajes de error generados por el usuario. |
E_USER_WARNING | Advertencias generadas por el usuario. |
E_USER_NOTICE | Avisos generados por el usuario. |
Para detectar el mayor número posible de errores durante el desarrollo de las páginas PHP es conveniente que la directiva error_reporting tome el valor E_ALL, aunque muchos servidores no suelen mostrar los avisos, ya que pueden deberse a errores intencionados.
error_reporting = E_ALL | Se muestran todos los errores. |
error_reporting = E_ALL & ~E_NOTICE | Se muestran todos los errores, menos los avisos. |
La directiva post_max_size especifica el tamaño máximo de los datos que pueden enviarse al servidor. La directiva upload_max_filesize especifica el tamaño máximo de un fichero que se envíe al servidor. Lógicamente, post_max_size debe ser superior a upload_max_filesize. Si el valor se expresa sin unidades, se interpreta como bytes. Se pueden utilizar las unidades K (kilobytes), M (megabytes) y G (Gigabytes).
post_max_size = 2M | tamaño máximo de los datos enviados: 2MB |
upload_max_filesize = 524288 | tamaño máximo de un archivo: 512 KB (512 * 1024) |
Para acceder a la base de datos MySQL, PHPHome solamente tiene activada la extensión mysql. Existe una extensión más moderna llamada mysqli, especialmente diseñada para sacar partido de PHP 5.0 y MySQL 4.1 (o posteriores). Para activar la extensión mysqli hay que quitar el punto y coma de comentario en la línea correspondiente del archivo php.ini.
extension=php_mysqli.dll | extensión mysqli |