Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

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? :(

share|improve this question
    
look in your error log –  Mike Oct 17 '11 at 1:51
    
Already did, "I do not have any valuable error log report". It's completely empty. –  Gabriel A. Zorrilla Oct 17 '11 at 1:53
    
You need more data to diagnose the problem. I would suggest starting by adding 'fastcgi_intercept_errors on;' to your config (if not in fastcgi_params) to log any FPM errors. Also add 'debug' to your error_log line to get a lot more detail (also check the main nginx error_log (possibly in /var/log)) . Your server_name directive looks unusual - not sure if you replaced it for this post or it actually is like that. As a general recommendation, move your root directive out of your location block. (Final (unlikely) suggestion: ensure your default server isn't serving the html pages you can see). –  cyberx86 Oct 17 '11 at 2:18

1 Answer 1

up vote 3 down vote accepted

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;
    }

}
share|improve this answer
    
Bingo. Moved root the server block as suggested and worked. Thanks! –  Gabriel A. Zorrilla Oct 17 '11 at 2:39
    
@quanta: Did the OP edit the config in his question? Because it's a hardcoded path it should still work perfectly fine when root directive is defined in location context. The only case where it wouldn't work was if he defined SCRIPT_FILENAME in his fastcgi_params file using $document_root and thus overriden his hardcoded one. –  Martin Fjordvald Oct 17 '11 at 4:07
    
@MartinF: No, the OP didn't edit the config. You're right. I will edit my answer. –  quanta Oct 17 '11 at 4:44

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.