Nginx PHP – Fixing Nginx and PHP5-FPM Not Rendering PHP Files

linuxnginxphp-fpmphp5

I've spent hours figuring out how to install Nginx + Ruby Enterprise Edition + PHP5-fpm and MYSQL, finally it is all installed and all seems to have started fine.

But for some reason php files are not being processed.

.html files work fine, but when I try and view a .php file it appears as though it doesn't exist, even though it does.
Interestingly, when I try and view a .html file that doesn't exist I get a nice Nginx 404 message, but when I view a .php file it doesn't even give me that.

So to my novice understanding, it looks like there's either something wrong with the config, or Nginx and PHP-fpm aren't talking to each other.

I've been looking at as many other examples of nginx config files and I'm sure that side of things is okay. Well… here's the relevant bit of the conf file anyway:

location ~ \.php$ {
   fastcgi_pass 127.0.0.1:9000;
   fastcgi_index index.php;
   fastcgi_param SCRIPT_FILENAME /var/www/eman/$fastcgi_script_name;
   include fastcgi_params;
 }

And

    fastcgi_connect_timeout 60;
 fastcgi_send_timeout 180;
 fastcgi_read_timeout 180;
 fastcgi_buffer_size 128k;
 fastcgi_buffers 4 256k;
 fastcgi_busy_buffers_size 256k;
 fastcgi_temp_file_write_size 256k;
 fastcgi_intercept_errors on;

Any help is greatly appreciated.

edit:
Here are the headers being returned from the test php file "http://eman.id.au/test.php":

HTTP/1.1 404 Not Found =>
Server => nginx/0.8.54
Date => Thu, 16 Dec 2010 19:30:30 GMT
Content-Type => text/html
Connection => close
X-Powered-By => PHP/5.3.2-1ubuntu4.5ppa5~lucid1

Best Answer

I believe I ran into exactly the same problem today, nginx does send the request to php-fpm (as indicated in the header) yet you get a 404, even though the file exists and has no (PHP/syntax) error at all, and no errors show up in any log (ngins or php-fpm).

You didn't include your full nginx config, but is it possible you don't have the option "root" define (correctly?) in your "server" section ? You need to make sure you do, that it points to the right location ofc and that it is inside the "server" section, not within a "location" one -- e.g:

server {
    root /var/www/eman;
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /var/www/eman/$fastcgi_script_name;
        include fastcgi_params;
    }
}