DEV Community

Karl Kubelet
Karl Kubelet

Posted on

TIL snippets/fastcgi-php.conf

For many many years, my PHP location in Nginx looked like this:

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}
Enter fullscreen mode Exit fullscreen mode

I never questioned it, it's just been copy-pasted a billion times over and over from thousands of online resources with PHP and WordPress tutorials.

Today, while writing the Nginx configuration lesson, I decided to question it, and tried to understand what every single line does, and why it's necessary.

Turns out, it's mostly redundant. The fastcgi-php.conf snippet was created for admins to avoid having to define a SCRIPT_FILENAME (and PATH_INFO in some older tutorials) manually, as well as include the default fastcgi_params.

Not sure why so many tutorials decided to add this snippet, without removing the redundant bits. My new location block now looks like this:

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php-fpm.sock;
}
Enter fullscreen mode Exit fullscreen mode

And this makes me happy.

Sometimes it's worth questioning things we do a certain way, simply because we've been doing them this way for many years.

Top comments (0)