Sunday, October 5, 2014

NGINX not executing PHP files




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


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

}

No comments:

Post a Comment

linux - How to SSH to ec2 instance in VPC private subnet via NAT server

I have created a VPC in aws with a public subnet and a private subnet. The private subnet does not have direct access to external network. S...