Certainly the most convenient way to develop a Symfony 5.x app is to use the symfony server. Eventually however, you may have to deploy the application. For a while use of nginx with php-fpm was the flavor of the month, but there are now simple ways of still using php-fpm with apache and achieving comparable performance to nginx.
For example a vhost setting like this one is possible:
<VirtualHost *:80> SetEnv ENVIRONMENT "dev" <FilesMatch \.php$> SetHandler proxy:fcgi://php:9000 # for Unix sockets, Apache 2.4.10 or higher </FilesMatch> # Proxy .php requests to port 9000 of the php-fpm container DocumentRoot /usr/local/apache2/cms/public ServerName cms.mydev.local ServerAdmin email@example.com
# Send apache logs to stdout and stderr CustomLog /proc/self/fd/1 common ErrorLog /proc/self/fd/2 </VirtualHost>
This particular configuration is for a Docker container setup, where php-fpm is being provided from the official php container, and since the container is named "php" it can be referenced in the "SetHandler proxy:fcgi://php:9000". Hopefully it should be clear that Apache will send requests for .php files will to php-fpm at port 9000.
Should you try and run your new symfony app, under apache, you'll immediately notice that it doesn't work properly, and routing and the debug bar amongst other things, will be broken.
The reason for this, is that many virtual directories and routes to virtual files won't be found and will return as 404 errors.
Clearly some rewrite magic is needed here, but what exactly?
Rather than try and figure this out yourself, Symfony helpfully provides a recipe that installs an .htaccess file to make your Symfony 5.2+ application work. Just use composer to add it to your project:
composer require symfony/apache-pack
This will add an .htaccess file to your project public directory with the needed rewrites to get your Symfony application routing successfully.