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]