Symfony se ha erigido como uno de los frameworks PHP más utilizados hasta la fecha. Con la versión 5 a la vuelta de la esquina, Symfony sigue en su proceso de actualización y mejora. Está basado en el patrón MVC que separa la lógica de negocio, la lógica de servidor y la presentación de la aplicación web. En este primer capítulo veremos que requisitos son necesarios para empezar a trabajar y cómo configurarlo para nuestro primer proyecto.
Requisitos técnicos Symfony 4.x
- PHP 7.1 o superior. Además comprobar que se tienen activadas las siguientes extensiones: Ctype, iconv, JSON, PCRE, Session, SimpleXML y Tokenizer
- Composer (instalador de paquetes PHP)
Configurar Symfony 4.x
Para instalar los binarios de Symfony es recomendable seguir las instrucciones desde el sitio oficial según nuestro sistema operativo. La instalación nos proporcionará:
- Una forma sencilla de crear nuevas aplicaciones
- Un servidor web local (soporte para HTTP/2, TLS/SSL y generación automática de certificados)
- Herramienta para comprobar vulnerabilidades
Una vez instalado podremos comprobar si nuestro sistema tiene todo lo necesario para desarrollar proyectos con Symfony mediante la siguiente orden:
symfony check:requirements
Si todo ha ido correctamente, obtendrás un mensaje como el que puedes ver en la siguiente imagen:

Como puedes comprobar se está haciendo uso de PHP 7.3.x, esto es importante ya que Symfony 4.x no va a trabajar con PHP 7.1 o inferior, por lo que si estás trabajando en desarrollo comprueba que la versión activada de PHP es la correcta. Otro aspecto importante, que veremos a continuación, son las recomendaciones de Symfony para la mejora de rendimiento. Estas recomendaciones no sólo competen al ámbito Symfony sino al de cualquier aplicación PHP.
Activar/configurar acelerador PHP (OPcache)
OPcache viene por defecto desde la versión 5.5 de PHP, por lo que lo más probable es que si estamos utilizando una versión 7.1 o superior esta extensión ya se encuentre instalada y activada. Si no es así, deberás comprobar que se encuentra activada y en caso contrario activarla. En mi caso, estoy haciendo uso de WAMP (Version 3.1.7 64bit) para trabajar en modo local, por lo que comprobar esto es relativamente sencillo. Hacemos clic izquierdo en el icono WAMP > PHP > PHP extensions y comprobamos que php_opcache dispone de una marca verde tal y como aparece en la siguiente imagen. En caso contrario pulsamos sobre la extensión para que se active. WAMP reiniciará automáticamente todos los servicios tras la activación.

También es posible realizar la activación de la extensión php_opcache de forma manual. Para ello deberás acceder al fichero php.ini (comprueba primero que estas editando la versión de php.ini correspondiente a la versión en uso). Una vez dentro deberás buscar “[opcache]” y cambiar la opción opcache.enable
a 1.
Mejorar rendimiento en Symfony
Los valores por defecto de OPcache no son suficientes para trabajar con Symfony y por ello será necesario realizar un par de modificaciones en el fichero php.ini
.
; The OPcache shared memory storage size. opcache.memory_consumption=256 ; The maximum number of keys (scripts) in the OPcache hash table. ; Only numbers between 200 and 1000000 are allowed. opcache.max_accelerated_files=20000
Verificación marcas de tiempo en archivos PHP
En los servidores de producción, los archivos PHP nunca deben cambiar, a menos que se implemente una nueva versión de la aplicación. Sin embargo, OPcache comprueba de forma predeterminada si los archivos en caché han cambiado su contenido desde que se almacenaron en caché. Esta verificación introduce un gatos de recursos innecesario que puede evitarse de la siguiente manera:
; When disabled, you must reset the OPcache manually or restart the ; webserver for changes to the filesystem to take effect. opcache.validate_timestamps=0
Después de cada implementación, se deberá vaciar la caché generada por OPcache. De lo contrario, las actualizaciones no serán visibles. Para evitarlo tendremos varias opciones:
- Reiniciar nuestro servidor web
- Llamar a la función
opcache_reset()
desde el servidor web (por ejemplo con un script desde la aplicación web). - Utilizando la herramienta cachetool desde la línea de comandos.
Configurar la caché de PHP (realpath)
Cuando una ruta relativa se transforma en su ruta real (absoluta), PHP almacena en caché el resultado para mejorar su rendimiento. Las aplicaciones que abren muchos archivos PHP, como los proyectos Symfony, deben tener los siguientes valores:
; Determines the size of the realpath cache to be used by PHP. This value should ; be increased on systems where PHP opens many files to reflect the quantity of ; the file operations performed. ; http://php.net/realpath-cache-size realpath_cache_size = 4096k ; Duration of time, in seconds for which to cache realpath information for a given ; file or directory. For systems with rarely changing files, consider increasing this ; value. ; http://php.net/realpath-cache-ttl realpath_cache_ttl = 600
Optimizar Composer con Autoloader
El cargador de clases (autloader) está optimizado para encontrar clases nuevas y/o modificadas. Cuando nos encontremos en producción, los archivos PHP nunca deberían cambiar, a menos que se despliegue una nueva versión de la aplicación. La optimización consistirá en crear un “mapa de clase” una única vez, cuya ubicación se encuentra en: vendor/composer/autoload_classmap.php
.
Deberá ejecutar la siguiente orden cada vez que vaya a realizar un despliegue de su aplicación:
composer dump-autoload --no-dev --classmap-authoritative
--no-dev
excluirá las clases que únicamente son necesarias en desarrollo.--classmap-authoritative
creará un “mapa de clase” compatible con PSR-0 y PSR-4, evitando que Composer escanee el sistema de ficheros en busca de clases que no se han encontrado en el “mapa de clase”.
Crear una aplicación con Symfony
Para poder crear una nueva aplicación Symfony, tendremos que escribir la siguiente orden en nuestro terminal:
symfony new mynewproject --full
Tras unos segundos Symfony creará un nuevo directorio “myproject” con todo lo necesario para empezar a desarrollar tu aplicación con Symfony.

Si tienes pensado crear un microservicio, una aplicación de consola o una API. Puedes utilizar la siguiente orden para crear tu proyecto:
symfony new mynewproject