I’ve just spent a while debugging this, was tricky’er than I thought. I had a (in theory) correct Nginx & PHP-FPM config, but whenever a PHP script was being parsed via php-fpm I could only get a blank white page – nothing more.
Turns out I missed a few vital parts of my FastCGI config.
So, for starters, when you get this: check all your access and errors logs. If your blank white page is returning a “200 OK” HTTP status code, changes are it’s being passed to PHP-FPM perfectly but it just doesn’t know how to parse it because some parameters are missing.
Here’s what I eventually went for that worked.
upstream backend_php {
server 127.0.0.1:9000;
}
-snip-
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#fastcgi_param PATH_INFO $fastcgi_script_name;
include fastcgi_params;
if (-f $request_filename) {
# Only throw it at PHP-FPM if the file exists (prevents some PHP exploits)
fastcgi_pass backend_php; # The upstream determined above
}
}
The important bits are the “upstream” selector and the fastcgi_params. Get those in that exact same way, and you should be good to go.
For more info on setting up Nginx 1.0 with PHP-FPM 5.3, check out the guide I wrote a while back.