PHP execution on nginx - files being downloaded instead

Posted January 22, 2019 23.7k views
NginxPHPUbuntu 18.04


I am attempting to execute PHP pages within my Nginx root directory, however despite many attempts to fix the issue they continue to be downloaded instead of executing. My nginx/sites-available/default file is:

server {
        listen 80 default_server;
        listen [::]:80 default_server;

         index index.php index.html index.htm index.nginx-debian.html;

         server_name _;

         # Serve up static content directly via nginx

         # Note: /var/www is a symlink to ~/qewd/www

         location / {
                  root /var/www;
                  try_files $uri $uri/ @qewd;

                  expires max;
                  access_log off;

          location ~ \.php$ {
                  try_files $uri $uri/ ;
                  fastcgi_split_path_info ^(.+\.php)(/.+)$;
                  fastcgi_pass unix:/run/php/php7.2-fpm.sock;
                  fastcgi_index index.php;
                  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                  include fastcgi_params;
                  access_log /var/www/php-access.log;

No events are written to the php-access.log and on each occasion I attempt to access a php page in the root directory it is downloaded still. Nginx is correctly routing php to the location block as I have successfully tested 404 messages within the location block. The php7.2-fpm.sock file is within /var/run/php/php7.2-fpm.sock and the php7.2-fpm service is active.

I have tried changing the nginx.conf file for default_type from application/octet-stream to text/html and text/plain but this does not seem to have made a difference also

It seems as though nginx is not passing the php page to fpm but I’m not sure as to why or if I have missed something silly. My nginx user is www-data, which is also the owner of my php7.2-fpm.sock file.

Any help with this is greatly appreciated.

Thank you very much.

1 comment

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Submit an Answer
2 answers

Hey friend,

From reviewing other situations this is what I pulled together, worth trying to see if it helps:

  1. Edit /etc/php7.2/fpm/php.ini and set cgi.fix_pathinfo to 0.
  2. Restart Nginx & PHP-FPM.

Beyond that maybe just going over this tutorial as a reference and making sure you can’t find anything out of place:

Because, frankly, I can’t see the cause clearly either.


by Justin Ellingwood
The LEMP software stack is a group of software that can be used to serve dynamic web pages and web applications. This is an acronym that describes a Linux operating system, with an Nginx web server. The backend data is stored in the MySQL database and the dynamic processing...

I’m not sure what is wrong with yours, but this worked for me when I was having that problem:

server {

   root /usr/share/nginx/html;
   location = favicon.ico { access_log off; log_not_found off; }
   index  index.php;
   location / {
       try_files $uri $uri/ =404;
   location ~ \.php$ {
       fastcgi_pass unix:/run/php-fpm/www.sock;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include fastcgi_params;

NOTE: I left out the listen statements in this example since mine is using port 443 (for HTTPS). This is the relevant part for what you are trying to solve.