NGINX not executing PHP files

nginxPHP

I could not find an answer for this. Installed PHP5 + NGINX + PHP-FPM and can not execute php files, it get a "Oops! This link appears to be broken." error in CHROME. I do not have any valuable error log report, i do have a index.php in the root, tried creating a custom phpinfo.php file, neither worked.

I DO can load HTML files, but cant PHP.

Here is my local site config in NGINX:

server {
    listen       80;
    server_name  im;
    access_log /var/www/website/access.log;
    error_log /var/www/website/error.log;

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


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

}

Changed ownership of all the directory to www-data:www-data, made a 777 on the php file, nothing. Restarted nginx, FPM, nothing.

Help? 🙁

Best Answer

it get a "Oops! This link appears to be broken." error in CHROME.

Chrome shows its own error page if the error page is less than 512 bytes.

I suspect that you have the following line in fastcgi_params:

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

and if so, because the root directive is defined in location / will be never applied to location ~ \.php$, thus the SCRIPT_FILENAME becomes URI.

This can be solve by moving the root directive to the server level context:

server {
    listen       80;
    server_name  im;
    access_log /var/www/website/access.log;
    error_log /var/www/website/error.log;

    root   /var/www/website;

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

}