Ver índice de contenidos del libro

19.5. Controlando las opciones de PHP

Para que el entorno PHP en el que se desarrolla la aplicación esté preparado para cumplir con las reglas y buenas prácticas recomendadas por la metodología del desarrollo ágil, Symfony comprueba el valor de algunas opciones del archivo de configuración php.ini y redefine su valor si es necesario. Para ello, se utiliza el archivo php.yml. El listado 19-10 muestra el archivo php.yml por defecto.

Listado 19-10 - Opciones de PHP por defecto en Symfony, en $sf_symfony_data_dir/config/php.yml

set:
  magic_quotes_runtime:        off
  log_errors:                  on
  arg_separator.output:        |
    &

check:
  zend.ze1_compatibility_mode: off

warn:
  magic_quotes_gpc:            off
  register_globals:            off
  session.auto_start:          off

El objetivo principal de este archivo es comprobar que la configuración PHP es compatible con la aplicación. También es muy útil para comprobar que la configuración del servidor de desarrollo es lo más parecida posible a la configuración del servidor de producción. Este es el motivo por el que se debería comprobar la configuración del servidor de producción antes de comenzar con un proyecto y se deberían trasladar sus opciones de PHP al archivo php.yml del proyecto. Una vez creado este archivo, se puede desarrollar y probar en el servidor de desarrollo con la tranquilidad de saber que no se producirán errores de incompatibilidad cuando se instale el proyecto en el servidor de producción.

Las variables definidas bajo la clave set se modifican (indpendientemente de cómo estén definidas en el archivo php.ini). Las variables definidas bajo la clave warn no se pueden modificar directamente, pero Symfony puede ejecutarse incluso cuando no están correctamente establecidas. Simplemente se considera una mala práctica tener activadas estas opciones, por lo que Symfony crea un mensaje de log de aviso. Las variables definidas bajo la clave check tampoco se pueden modificar directamente, pero Symfony requiere que tengan un determinado valor para que se pueda ejecutar correctamente. Por lo tanto, en este caso se lanzaría una excepción si el archivo php.ini no es correcto.

El archivo php.yml por defecto establece la opción log_errors a on, de forma que se puedan generar trazas para los proyectos Symfoyn. También recomienda establecer la opción register_globals a off para evitar agujeros de seguridad.

Si no se quiere que Symfony aplique estas opciones o si se quiere ejecutar un proyecto con las opciones magic_quotes_gpc y register_globals establecidas a on sin que se muestren mensaje de aviso, se debe crear un archivo php.yml en el directorio config/ de la aplicación y se redefinen las opciones que se quieren modificar.

Además, si un proyecto requiere el uso de algunas extensiones de PHP, se pueden especificar bajo la categoría extensions. El valor de esta opción se indica mediante un array con el nombre de las extensiones de PHP obligatorias:

extensions: [gd, mysql, mbstring]