nginx + php-fpm = File not found

2019-03-17 22:48发布

问题:

When i try accessing info.php I get a File not found. error.

I tried some Tutorials to no avail.

Configs: default:

server {
    listen         80;
    listen   [::]:80 default ipv6only=on; 
    server_name  localhost;

    location / {
        root   /var/www;
        index  index.html index.htm index.php;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:7777;
        fastcgi_index  index.php;
        fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
        fastcgi_buffers 256 128k;
        #fastcgi_buffer_size 16k;
        #fastcgi_busy_buffers_size 256k;
        fastcgi_connect_timeout 300s;
        fastcgi_send_timeout 300s;
        fastcgi_read_timeout 300s;
        include fastcgi_params;
    }
}

What's the problem?

回答1:

If that info.php is in /var/www, then it's wrong to instruct fast_cgi to look for

/usr/share/nginx/html/info.php;

Use the same root for html and php. Also, root and index parameters should be outside a particular location except for very specific uses.

server {
   listen         80;
   listen   [::]:80 default ipv6only=on; 
   server_name  localhost;
   root   /var/www;
   index  index.html index.htm index.php;


   #pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

   location ~ \.php$ {
       fastcgi_pass 127.0.0.1:7777;
       fastcgi_index  index.php;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_buffers 256 128k;
       fastcgi_connect_timeout 300s;
       fastcgi_send_timeout 300s;
       fastcgi_read_timeout 300s;
       include fastcgi_params;
    }
}

needless to say, you still need to make sure your php-fpm service is listening at port 7777. Common case is to have it listening at port 9000.



回答2:

If you checked every thing and it's correct configured, then there is last point i got:

  • check that correct username if mentioned in file /etc/php-fpm.d/www.conf


回答3:

server {
listen         80;
listen   [::]:80 default ipv6only=on; 
server_name  localhost;
root   /var/www;
location / {
    index index.php;
}
location ~ \.php(?:$|/) {
   fastcgi_pass 127.0.0.1:7777;
   fastcgi_index  index.php;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   fastcgi_buffers 256 128k;
   fastcgi_connect_timeout 300s;
   fastcgi_send_timeout 300s;
   fastcgi_read_timeout 300s;
   include fastcgi_params;
}

}



回答4:

Nginx & Symlinks

Note, if root /var/www; is a symlink, change it to root /var/www/; otherwise nginx won't go past the symlink and you'll get a File not found error



回答5:

I took a long look at this, in the end turned out that FPM wasn't running :-s in my case a simple service php7.2-fpm restart did the trick!



回答6:

I had this issue and none of the answers here worked. The issue for me ended up being caused by SELinux. I disabled SELinux and it fixed the issue.

Be aware that disabling SELinux does have an impact on security. There's almost certainly a better way to fix this, but disabling SELinux works for my purposes.



标签: php nginx