Normally, when we are configuring legacy applications is difficult to find accurate documentation about the used tools (Dependencies, Libraries, Environment).
Currently, Symfony's version is 5.3.10 thus actual documentation points out towards these newer versions from the framework even though previous documentation is still accessible since version 2.7
Avoid looking for hundred sites and freaking out whether any solutions work or work partially, in this post we are going a step to step to configure a Symfony 2.7 app in Apache 2.4 HTTP Server running in Ubuntu 20.04.
I don't recommend editing
etc/apache2/apache2.conf because it is the main configuration file of Apache so if you broke that file probably your Apache will not work.
Add the next code in
etc/apache2/sites-available/000-default.conf inside the block
<VirtualHost *:80> or create your own configuration file in
etc/apache2/sites-available if you do the last one remember run the script
a2ensite YOUR_CONFIGURATION_FILE.conf for Apache recognize it.
DocumentRoot /var/www/html/YOUR_PROJECT_NAME/web <Directory /var/www/html/YOUR_PROJECT_NAME/web> AllowOverride All Require all granted Allow from All </Directory>
DocumentRoot: Apache will serve files located here
Directory: Group of files where we are applying Apache rules
AllowOverride All: Allow configuration from .htaccess
Require all granted: Access is allowed unconditionally.
Allow from All: All hosts can access the server.
Finally, report Apache about that change and reload it.
service apache2 reload
The previous configuration aimed to configure with mod_php/PHP-CGI if you want to configure with PHP-FPM, I recommend visiting the official documentation or if you want to validate the Apache configuration for yourself
/var/log/apache2/error.log if something wrong happens
app/logs folders must be accessed by web-server user
www-data (This is the default username, keep in mind if your web server has a different username or group name you should replace it with the corresponding name) to Symfony Applications work as expected. I highly recommended changing the default group of the project's folder to
/var/www/ to avoid relating this folder with the root user
sudo chown -R :www-data /var/www
sudo usermod -a -G www-data YOUR_USER exit
Remember to exit your current session or reload your terminal to save changes
www-data must create logs and cache folders itself.
chmod 775 -R app
Or you can create manually the folders and specifically add the permissions.
chmod 775 -R app/cache chmod 775 -R app/logs
I created a table to let you know the possible combination when you are defining file permission in a Unix environment
r = Read
w = Write
x = Execute
This configuration is oriented to development environment and you could start coding as fast as possible, if you need a production environment keep in mind Symfony recommendations and links that I had previously shown you and be careful exposing ONLY your
I hope this could be very helpful to you, This is my first article written in English and oriented to developers. I expect your feedback or it is something wrong let me know to make the corresponding corrections.