9/23/2014 - 3:18 PM

The Laravel Forge, NGINX, PHP-FPM & A Blank Page Debugging Tale

The Laravel Forge, NGINX, PHP-FPM & A Blank Page Debugging Tale

After an apt-get upgrade on my Forge box, both php and nginx got upgraded, and while browsing my sites, PHP FPM was being hit by nginx, but it returned nothing, zilch, nada.

Nothing on laravel.log.

Something in the nginx log: - - [23/Sep/2014:11:52:09 -0300] "GET / HTTP/1.1" 200 31 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36"

Enabling xdebug.auto_trace, in /etc/php5/fpm/, gave me

TRACE START [2014-09-23 14:52:09]
    0.0000      15456
TRACE END   [2014-09-23 14:52:09]

Enabling /status in /etc/php5/fpm/pool.d/www.conf:

pm.status_path = /status

And adding this location block to my site:

location ~ ^/(status|ping)$ {
   access_log off;
   deny all;
   include fastcgi_params;
   fastcgi_pass unix:/var/run/php5-fpm.sock;

I still got nothing from So I installed cgi-fcgi, a nice and handy tool:

sudo apt-get --yes install libfcgi0ldbl

Ran it directly to the site source

SCRIPT_NAME=/ SCRIPT_FILENAME=~/ QUERY_STRING= REQUEST_METHOD=GET cgi-fcgi -bind -connect /var/run/php5-fpm.sock

BANG! The site login page script exploded in my terminal. So I did the same with

SCRIPT_NAME=/status SCRIPT_FILENAME=/status QUERY_STRING= REQUEST_METHOD=GET cgi-fcgi -bind -connect /var/run/php5-fpm.sock

And it looked like PHP FPM was really working fine:

pool:                 www
process manager:      dynamic
start time:           23/Sep/2014:11:42:26 -0300
start since:          1230
accepted conn:        8
listen queue:         0
max listen queue:     0
listen queue len:     0
idle processes:       1
active processes:     1
total processes:      2
max active processes: 1
max children reached: 0
slow requests:        0

Xdebug created a huge file too.

Being sure the problem was in NGINX, I googled "nginx 1.6.2 php fpm" and found the fix, adding this line to my nginx site conf solved it:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;