# Configuración de Apache y PHP

## Introducción

Esta explicación sobre la configuración de Apache y PHP está adaptada a XAMPP 1.7.7.

Cada vez que se modifica alguno de los ficheros de configuración es necesario detener y reiniciar el servidor.

### Cómo modificar los archivos de configuración

Antes de modificar cualquier archivo de configuración, se recomienda hacer una copia de seguridad del archivo de configuración original.

Si al modificar algún archivo de configuración nos equivocamos e introducimos errores, es probable que el servidor no pueda arrancar. Si no somos capaces de encontrar el error, siempre podemos restaurar en archivo de configuración original y empezar de nuevo, sin necesidad de reinstalar los programas.

Al modificar cualquier archivo de configuración, es conveniente documentar los cambios. Para ello, recomiendo hacer tres cosas:

- no modificar la línea del archivo original, sino añadirle el carácter de comentario al principio de la línea (almohadilla o punto y coma)
- añadir la línea modificada
- añadir una línea de comentario indicando la fecha, el autor y el cambio realizado.

Por ejemplo, la siguiente línea es una línea del archivo de configuración de Apache:

    DocumentRoot "C:/xampp/htdocs"

En caso de modificarla, el archivo de configuración quedaría así (se ha resaltado el texto añadido):

    # 2011-02-09. Barto. He cambiado el directorio raíz del servidor
    # DocumentRoot "C:/xampp/htdocs"
    DocumentRoot "C:/www"

Volver al principio de la página

## Configuración de Apache

El fichero de configuración de Apache es el archivo httpd.conf, un archivo de texto sin formato.

En httpd.conf las líneas comentadas empiezan por el carácter almohadilla (#). En Windows, al escribir una ruta de directorio en httpd.conf se puede utilizar tanto la barra como la contrabarra (es decir, se puede escribir tanto C:\xampp como C:/xampp).

En XAMPP 1.7.7 el archivo httpd.conf se encuentra en el directorio:

- en Windows: C:\xampp\apache\conf\
- en GNU/Linux: /opt/lamp/etc/

Se comentan a continuación algunas directivas de configuración de Apache. Antes de modificar cualquier archivo de configuración, se recomienda hacer una copia de seguridad del archivo de configuración original.

### Ubicación de las páginas web

Con la configuración inicial de XAMPP 1.7.7, al abrir en el navegador una página web cuya dirección empieza por http://localhost/ el comportamiento de Apache es el siguiente:

- Apache busca la página web solicitada a partir del directorio raíz del servidor, indicado por la directiva DocumentRoot del archivo httpd.conf (normalmente, en Windows C:\xampp\htdocs y en GNU/Linux /opt/lampp/htdocs).
- Si encuentra el archivo, lo sirve al navegador.
- Si no encuentra el archivo, busca si existe alguno de los archivos indicados por la directiva DirectoryIndex (normalmente, index.php, index.php4, index.php3, index.cgi, index.pl, index.html, index.htm, etc) y si lo encuentra, lo sirve al navegador.
- Si no encuentra ninguno de esos archivos, Apache envía al navegador el listado del directorio.

Esta configuración es adecuada para entornos de programación, pero en entornos de producción se suele modificar, por ejemplo, para no enviar el listado del directorio.

En el directorio raíz del servidor, XAMPP 1.7.7 instala una serie de páginas que permiten administrar el servidor, por eso al abrir en el navegador la dirección http://localhost se abre una página de configuración propia de XAMPP.

A la hora de añadir otras páginas en el servidor, se puede hacer de varias formas:

- Cambiar el directorio raíz del servidor, modificando la directiva DocumentRoot. Tiene el inconveniente de que las páginas de XAMPP se perderían (aunque podríamos recuperarlas creando una directiva Alias).
- Crear directorios de usuario, mediante la directiva UserDir. Es la mejor solución en un ordenador con varios usuarios de Windows para que cada usuario tenga sus propias páginas separadas e independientes del resto. Cada usuario puede guardar sus páginas en un directorio (con el mismo nombre para todos los usuarios, pero cada uno en su propia carpeta de Mis Documentos) y cada usuario sólo ve sus páginas.
- Crear uno o varios alias, mediante la directiva Alias. Es una solución que permite mantener las páginas en los directorios que más nos interesen, aunque si hay varios usuarios, estos tienen que tener en cuenta los alias creados por los demás, puesto que los nombres no se pueden repetir.

En clase, dado que sólo hay un usuario de Windows, aunque hay varios alumnos que utilizan el mismo usuario, optaremos por la solución de crear alias, uno para cada alumno que utilice el ordenador.

### DocumentRoot

La directiva DocumentRoot especifica el directorio donde se encuentran las páginas web. Cuando en la barra de dirección del navegador se escriba una dirección que comience por http://localhost/, el servidor buscará los archivos a partir de ese directorio. La directiva DocumentRoot va acompañada de una directiva <Directory> que especifica qué servicios y características están permitidos o prohibidos en el directorio.

En XAMPP 1.7.7 el valor predeterminado de DocumentRoot es el siguiente:

    DocumentRoot "C:/xampp/htdocs"

     ... (se han omitido varias líneas del archivo de configuración)

    <Directory "C:/xampp/htdocs">
        #
        # Possible values for the Options directive are "None", "All",
        # or any combination of:
        #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
        #
        # Note that "MultiViews" must be named *explicitly* --- "Options All"
        # doesn't give it to you.
        #
        # The Options directive is both complicated and important.  Please see
        # http://httpd.apache.org/docs/2.2/mod/core.html#options
        # for more information.
        #
        Options Indexes FollowSymLinks Includes ExecCGI

        #
        # AllowOverride controls what directives may be placed in .htaccess files.
        # It can be "All", "None", or any combination of the keywords:
        #   Options FileInfo AuthConfig Limit
        #
        AllowOverride All

        #
        # Controls who can get stuff from this server.
        #
        Order allow,deny
        Allow from all

    </Directory>

Si se quiere cambiar DocumentRoot y utilizar, por ejemplo, el directorio C:\www, hay que modificar tanto la línea de DocumentRoot como el Directory correspondiente. El archivo de configuración debería quedar así (se ha resaltado el texto añadido):

    # 2011-01-09. Barto. He cambiado el directorio raíz del servidor
    # DocumentRoot "C:/xampp/htdocs"
    DocumentRoot "C:/www"

     ... (se han omitido varias líneas del archivo de configuración)

    # 2011-01-09. Barto. He cambiado la directiva Directory de DocumentRoot
    # <Directory "C:/xampp/htdocs">
    <Directory "C:/www">
        #
        # Possible values for the Options directive are "None", "All",
        # or any combination of:
        #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
        #
        # Note that "MultiViews" must be named *explicitly* --- "Options All"
        # doesn't give it to you.
        #
        # The Options directive is both complicated and important.  Please see
        # http://httpd.apache.org/docs/2.2/mod/core.html#options
        # for more information.
        #
        Options Indexes FollowSymLinks Includes ExecCGI

        #
        # AllowOverride controls what directives may be placed in .htaccess files.
        # It can be "All", "None", or any combination of the keywords:
        #   Options FileInfo AuthConfig Limit
        #
        AllowOverride All

        #
        # Controls who can get stuff from this server.
        #
        Order allow,deny
        Allow from all

    </Directory>

Hay que tener cuidado con las erratas, ya que cualquier error impedirá que Apache se ponga en marcha.

Volver al principio de la página

### UserDir

Como en un ordenador con Windows XP puede haber varios usuarios, puede ser un problema que todos los usuarios utilicen el mismo directorio raíz. La directiva UserDir permite que cada usuario guarde sus páginas en su propio directorio Mis Documentos y que cada uno acceda a ellos escribiendo en el navegador la dirección http://localhost/~nombre-de-usuario.

Hay que tener en cuenta que aunque se definan directorios de usuarios, http://localhost sigue mostrando el directorio indicado por la directiva DocumentRoot.

Para que Apache pueda acceder a los directorios de los usuarios, en httpd.conf debe estar cargado el módulo userdir mediante la directiva:

    LoadModule userdir_module modules/mod_userdir.so

En XAMPP 1.7.7 esta directiva está comentada de forma predeterminada, por lo que es necesario borrar el carácter de almohadilla.

Si se carga el módulo userdir, entonces deben indicarse los módulos de usuario mediante la directiva UserDir. En XAMPP 1.7.7 la configuración de los directorios de usuario se realiza en un archivo separado (aunque el contenido de este archivo podría incluirse en el archivo httpd.conf) que se encuentra referenciado mediante la directiva

    Include conf/extra/httpd-userdir.conf

En XAMPP 1.7.7 esta directiva no está comentada de forma predeterminada, por lo que no es necesario modificarla, aunque conviene comprobarlo.

El archivo httpd-userdir.conf contiene las directivas UserDir y <Directory> que especifican la ubicación de los archivos de usuario y su modo de acceso. El archivo que instala XAMPP 1.7.7 debe modificarse para definir el directorio de usuario concreto, como en el ejemplo siguiente, en el que Windows está instalado en C:/, el usuario se llama "NombreDeUsuario" y la carpeta en la que se encuentran las páginas web es "Mis documentos/www".

    <IfModule userdir_module>

        # 2011-01-09. Barto. He añadido este Directorio de usuario:
        UserDir "Mis documentos/www"
        <Directory "C:/Documents and Settings/NombreDeUsuario/Mis documentos/www">
          Options Indexes FollowSymLinks Includes ExecCGI
          AllowOverride All
          Order allow,deny
          Allow from all
       </Directory>

    </IfModule>

Hay que tener cuidado con las erratas, ya que cualquier error impedirá que Apache se ponga en marcha.

Volver al principio de la página

### Alias

La directiva Alias permite que el servidor abra páginas que no estén dentro del directorio establecido mediante la directiva DocumentRoot.

Para que Apache pueda acceder a esos directorios, en el archivo httpd.conf debe estar cargado el módulo alias mediante la directiva:

    LoadModule alias_module modules/mod_alias.so

En XAMPP 1.7.7 esta directiva no está comentada de forma predeterminada, por lo que no es necesario modificarla, aunque conviene comprobarlo.

Además, hay que añadir en el archivo httpd.conf una directiva Alias dentro de la directiva <IfModule alias_module> (que ya existe en XAMPP 1.7.7).

Como ejemplo, vamos a crear un par de alias. Supongamos que hay dos alumnos que utilizan el mismo usuario y cada uno quiere guardar su páginas en Mis Documentos y acceder a ellas a través del servidor. Así:

- El usuario se llama NombreDeUsuario
- Los alumnos se llaman Ana y Benito
- Ana va a guardar sus archivos en la carpeta Mis documentos/Ana/PHP
- Ana accederá a sus archivos escribiendo en el navgeador http://localhost/ana
- Benito va a guardar sus archivos en la carpeta Mis documentos/Benito/PHP
- Benito accederá a sus archivos escribiendo en el navgeador http://localhost/benito

Para ello, hay que añadir en el archivo httpd.conf dos directivas Alias dentro de la directiva <IfModule alias_module>. Si ya existe la directiva IfModule (como ocurre en XAMPP 1.7.7), sólo habría que añadir las líneas en negrita del ejemplo siguiente:

- en Windows:

      <IfModule alias_module>

          # 2011-01-09. Ana. He añadido este Alias:
          Alias /ana "C:/Documents and Settings/NombreDeUsuario/Mis documentos/Ana/PHP"
          <Directory "C:/Documents and Settings/NombreDeUsuario/Mis documentos/Ana/PHP">
            Options Indexes FollowSymLinks Includes ExecCGI
            AllowOverride All
            Order allow,deny
            Allow from all
          </Directory>

          # 2011-01-09. Benito. He añadido este Alias:
          Alias /benito "C:/Documents and Settings/NombreDeUsuario/Mis documentos/Benito/PHP"
          <Directory "C:/Documents and Settings/NombreDeUsuario/Mis documentos/Benito/PHP">
            Options Indexes FollowSymLinks Includes ExecCGI
            AllowOverride All
            Order allow,deny
            Allow from all
          </Directory>

          ScriptAlias /cgi-bin/ "C:/xampp/cgi-bin/"
      </IfModule>

- en GNU/Linux:

      <IfModule alias_module>

          # 2011-01-09. Ana. He añadido este Alias:
          Alias /ana "/home/NombreDeUsuario/Documents/Ana/PHP"
          <Directory "/home/NombreDeUsuario/Documents/Ana/PHP">
            Options Indexes FollowSymLinks Includes ExecCGI
            AllowOverride All
            Order allow,deny
            Allow from all
          </Directory>

          # 2011-01-09. Benito. He añadido este Alias:
          Alias /benito "/home/NombreDeUsuario/Documents/Benito/PHP"
          <Directory "/home/NombreDeUsuario/Documents/Benito/PHP">
            Options Indexes FollowSymLinks Includes ExecCGI
            AllowOverride All
            Order allow,deny
            Allow from all
          </Directory>

          ScriptAlias /cgi-bin/ "C:/xampp/cgi-bin/"
      </IfModule>

Como se ha comentado en el apartado de la directiva DocumentRoot, se debe incluir una directiva <Directory> para el directorio indicado en la directiva Alias.

Hay que tener cuidado con las erratas, ya que cualquier error impedirá que Apache se ponga en marcha.

Volver al principio de la página

## Configuración de PHP

El archivo de configuración de PHP es el archivo php.ini, un archivo de texto sin formato.

En php.ini las líneas comentadas empiezan por el carácter punto y coma (;).

En XAMPP 1.7.7 el archivo php.ini se encuentra:

- en Windows, en el directorio C:\xampp\php\php.ini.
- en GNU/Linux, en el directorio /opt/lampp/etc.

Se comentan a continuación algunas directivas de configuración de PHP, aunque también se puede consultar el manual de PHP. Antes de modificar cualquier archivo de configuración, se recomienda hacer una copia de seguridad del archivo de configuración original.

Nota: La ruta del archivo php.ini que se está utilizando se indica en el campo "Loaded Configuration File" de la primera tabla que muestra la función phpinfo(). En el menú de la página de administración de XAMPP 1.7.7 hay una opción phpinfo() que muestra la configuración de PHP.

### short_open_tag

Los fragmentos de código PHP se identifican mediante las etiquetas <?php .... ?>. La directiva short_open_tag especifica si también se admiten las etiquetas <? ... ?>.

short_open_tag = On | Se admite el uso de <? ... ?> en vez de <?php ... ?>
short_open_tag = Off | No se admite el uso de <? ... ?> en vez de <?php ... ?> (Valor recomendado)

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.

    short_open_tag = Off        ; Valor recomendado en este curso si no se va a utilizar el panel de control de XAMPP

En XAMPP 1.7.7 esta directiva viene predeterminada con valor On, por lo que sería necesario modificarla, pero si se cambia el valor a Off, las páginas del panel de control de XAMPP dejan de funcionar, así que la dejaremos en On. Pero es conveniente que comencemos siempre los fragmentos php por <?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"; ?> |

Volver al principio de la página

### register_globals

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 (Valor recomendado)

Por motivos de seguridad, se recomienda que esta directiva tome el valor Off.

    register_globals = Off        ; Valor recomendado en este curso

En XAMPP 1.7.7 esta directiva viene predeterminada con valor Off, por lo que no es necesario modificarla, aunque conviene comprobarlo.

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

La forma correcta de acceder al dato recibido es a través de la matriz $_REQUEST (o $_POST o $_GET):

<?php print "$_REQUEST[prueba]"; ?> | Hola

Volver al principio de la página

### error_reporting

La directiva error_reporting especifica el tipo de errores notificados por PHP. Por ejemplo:

error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED | Se muestran todos los errores, menos los avisos y obsoletos.
error_reporting = E_ALL | E_STRICT | Se muestran todos los errores (Valor recomendado)

En un entorno de producción, se suelen omitir los mensajes de error por motivos de seguridad, pero en un entorno de desarrollo es conveniente mostrar el mayor número de errores y avisos para corregirlos.

    error_reporting = E_ALL | E_STRICT        ; Valor recomendado en este curso

En XAMPP 1.7.7 esta directiva viene predeterminada con el valor E_ALL | E_STRICT, por lo que no es necesario modificarla, aunque conviene comprobarlo.

El problema de utilizar una configuración tan exigente es que algunos paquetes de terceros (blbliotecas, CMS, etc.) pueden dejar de funcionar y a veces no queda más remedio que volver a un valor menos estricto para poderlos utilizar.

Los posibles valores de esta directiva, que se pueden combinar con & (o con | en el caso de E_STRICT), son los siguientes:

Tipo de error | Descripción
--- | ---
E_ALL | Todos los errores y avisos excepto E_STRICT.
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_RECOVERABLE_ERROR | Error recuperable.
E_DEPRECATED | Advertencias sobre código obsoleto que no funcionará en futuras versiones de PHP.
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.
E_USER_DEPRECATED | Advertencias generadas por el usuario sobre código que no funcionará en futuras versiones de PHP.

Para mostrar todos los errores la directiva error_reporting debe tomar el valor E_ALL | E_STRICT.

Volver al principio de la página

### output_buffering

La directiva output_buffering especifica si la salida del programa se envía a medida que se va generando o se utiliza un buffer intermedio para reducir el tráfico de salida del servidor.

output_buffering = 4096 | Se utiliza un buffer de 4096 bytes.
output_buffering = Off | No se utiliza buffer.

En un entorno de producción se suele utilizar un buffer de salida, pero esto puede tener efectos inesperados. Por ejemplo, si la página crea una cabecera de respuesta HTTP después de escribir texto, PHP debería dar un aviso puesto que las cabeceras sólo se pueden envíar antes que el texto de la página. Pero si se utiliza buffer puede ocurrir que PHP no dé aviso (si el principio de la página todavía está en el buffer y no se ha enviado). Si esa misma página se ejecuta después en un servidor que tenga el buffer desactivado, entonces sí que se produciría el aviso y la cabecera no se enviaría. Por eso es conveniente desactivar el buffer y poder detectar ese tipo de errores.

    output_buffering = Off        ; Valor recomendado en este curso

En XAMPP 1.7.7 esta directiva viene predeterminada con el valor 4096, por lo que es necesario modificarla.

### extensión mysqli

Nota: En este curso no se utilizará esta extensión. La conexión con las bases de datos se realizarán a través de PDO.

Para acceder a la base de datos MySQL, existen varias extensiones. La extensión mysql es la versión más antigua, mientras que la extensión mysqli es una versión más moderna, especialmente diseñada para sacar partido de PHP 5.0 y MySQL 4.1 (o posteriores). Además, existen dos drivers de bajo nivel: MySQL Client Library (libmysql) o MySQL Native Driver (mysqlnd).

    extension=php_mysqli.dll        ; Valor recomendado en este curso

XAMPP 1.7.7 tiene activada tanto la extensión mysql como la extensión mysqli, por lo que no es necesario modificarla, aunque conviene comprobarlo.

Volver al principio de la página

### extensión pdo_mysql

Para acceder a la base de datos MySQL mediante la biblioteca PDO, debe estar activada la extensión PDO MySQL. Además, existen dos drivers de bajo nivel: MySQL Client Library (libmysql) o MySQL Native Driver (mysqlnd).

    extension=php_pdo_mysql.dll        ; Valor recomendado en este curso

XAMPP 1.7.7 tiene activada la extensión con el driver libmysql, por lo que no es necesario modificarla, aunque conviene comprobarlo.

Volver al principio de la página

### extensión pdo_sqlite

Para acceder a la base de datos SQLite mediante la biblioteca PDO, debe estar activada la extensión PDO SQLite.

    extension=php_pdo_sqlite.dll        ; Valor recomendado en este curso

XAMPP 1.7.7 tiene activada la extensión PDO SQLite, por lo que no es necesario modificarla, aunque conviene comprobarlo.

Volver al principio de la página

### session.save_handler

Para utilizar sesiones mediante el mecanismo propio de PHP (es decir, sin necesidad de crear funciones propias), la directiva session.save_handler debe tener el valor files.

    session.save_handler = files        ; Valor recomendado en este curso

En XAMPP 1.7.7 esta directiva viene predeterminada con el valor files, por lo que no es necesario modificarla, aunque conviene comprobarlo.

Algunos gestores de contenidos (CMS) tienen sus propias funciones de gestión de sesiones y requieren que esta directiva tome el valor user. Si en nuestra instalación de Apache el valor es user, para evitar conflictos nuestros programas pueden modificar esta directiva en tiempo de ejecución, mediante la función ini_set('session.save_handler', 'files'); (véase la lección sobre sesiones).

Volver al principio de la página

### session.use_trans_sid

Las sesiones normalmente almacenan el identificador de sesión en forma de cookie en el ordenador del usuario. En caso de las cookies estén deshabilitadas en el navegador, las sesiones no funcionarán. La directiva session.use_trans_sid permite utilizar sesiones aunque las cookies estén desactivadas, añadiendo el identificador de la sesión a la dirección de la página como un control más. En general no se aconseja ese uso, pues hace visible al usuario el identificador de la sesión y, sin querer, el usuario puede enviarlo a otra persona que podría acceder a la misma sesión desde otro ordenador.

    session.use_trans_sid = 0        ; Valor recomendado en este curso

En XAMPP 1.774 esta directiva viene predeterminada con el valor 0, por lo que no es necesario modificarla, aunque conviene comprobarlo.

Volver al principio de la página

### magic quotes

Algunos caracteres deben "escaparse" (es decir, colocar una contrabarra \ antes del carácter) antes de poderse utilizar en consultas a bases de datos, ya que esos caracteres tienen significados especiales y provocarían resultados inesperados (o lo que es peor, provocados por usuarios maliciosos). El mecanismo de las comillas mágicas (magic quotes) se introdujo en PHP 3 para evitar ese problema y consiste en que si la directiva magic_quotes_gpc tiene el valor On, PHP escapa automáticamente todos los datos recibidos por los mecanismos GPC (Get/Post/Cookie).

magic_quotes_gpc = On | comillas mágicas activadas
magic_quotes_gpc = Off | comillas mágicas desactivadas (Valor recomendado)

El problema es que las comillas mágicas no resuelven todos los problemas y generan problemas en otras situaciones, por lo que actualmente se recomienda que esta directiva tome el valor Off (y tener en cuenta en los programas que la directiva puede tener el valor On).

En lugar de las comillas mágicas el programador debe utilizar las funciones específicas de cada base de datos para evitar ese problema, o escapar explícitamente una cadena utilizando la función addslashes().

    magic_quotes_gpc = Off        ; Valor recomendado en este curso

En XAMPP 1.7.7 esta directiva viene predeterminada con el valor Off, por lo que no es necesario modificarla, aunque conviene comprobarlo.

Volver al principio de la página

### date.timezone

Las funciones relacionadas con fechas y horas se configuran mediante varias directivas.

La directiva date.timezone establece la zona horaria predeterminada para todas las funciones de fecha y hora.

Al instalar XAMPP 1.7.7, el instalador da un valor estimado de la zona horaria. En el caso de España, XAMPP 1.7.7 da el valor Europe/Berlin que se puede cambiar al valor Europe/Madrid (que es el mismo, claro). Se puede consultar la lista completa de zonas horarios permitidas en la web de php.

    ; 2011-02-09. Barto. He cambiado el nombre del huso horario a Madrid
    ; date.timezone = "Europe/Berlin"
    date.timezone = "Europe/Madrid"

Junto la la directiva date.timezone se muestran las otros cuatro directivas (aunque no están definidas porque están comentadas):

    ; http://www.php.net/date.default-latitude
    ;date.default_latitude = 31.7667

    ; http://www.php.net/date.default-longitude
    ;date.default_longitude = 35.2333

    ; http://www.php.net/date.sunrise-zenith
    ;date.sunrise_zenith = 90.583333

    ; http://www.php.net/date.sunset-zenith
    ;date.sunset_zenith = 90.583333

La latitud y longitud predeterminadas corresponden a la ciudad de Jerusalén. Si se quieren asignar los valores correspondientes a la ciudad de Madrid, habría que cambiarlos a

    ; 2011-02-09. Barto. He cambiado la latitud a Madrid: 40 25 02 N = 40.4173
    ; http://www.php.net/date.default-latitude
    ;date.default_latitude = 31.7667
    date.default_latitude = 40.4173

    ; 2011-02-09. Barto. He cambiado la longtud a Madrid: 3 42 22 W = -3.7063
    ; http://www.php.net/date.default-longitude
    ;date.default_longitude = 35.2333
    date.default_longitude = -3.7063

    ; http://www.php.net/date.sunrise-zenith
    ;date.sunrise_zenith = 90.583333

    ; http://www.php.net/date.sunset-zenith
    ;date.sunset_zenith = 90.583333

Volver al principio de la página

### post_max_size y upload_max_filesize

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 = 8M                ; Valor recomendado en este curso
    upload_max_filesize = 128M        ; Valor recomendado en este curso

En XAMPP 1.7.7 estas directivas viene predeterminada con los valores 8M y 128M, por lo que no es necesario modificarlas, aunque conviene comprobarlos.

Volver al principio de la página

Esta obra está bajo una licencia de Creative Commons Reconocimiento-CompartirIgual 3.0 España.