Sunday, July 27, 2014

Blank Page: wordpress on nginx+php-fpm



Good day.



While this post discusses a similar setup to mine serving blank pages occasionally after having made a successful installation, I am unable to serve anything but blank pages. There are no errors present in /var/log/nginx/error.log, /var/log/php-fpm.log or /var/log/nginx/us/sharonrhodes/blog/error.log.







  • Wordpress 3.0.4

  • nginx 0.8.54

  • php-fpm 5.3.5 (fpm-fcgi)

  • Arch Linux





php-fpm.conf:





[global]
pid = run/php-fpm/php-fpm.pid
error_log = log/php-fpm.log
log_level = notice

[www]
listen = 127.0.0.1:9000
listen.owner = www

listen.group = www
listen.mode = 0660
user = www
group = www

pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35

pm.max_requests = 500


nginx.conf:




user www;
worker_processes 1;

error_log /var/log/nginx/error.log notice;

pid /var/run/nginx.pid;


events {
worker_connections 1024;
}


http {
include mime.types;

default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;

gzip on;

include /etc/nginx/sites-enabled/*.conf;
}



/etc/nginx/sites-enabled/blog_sharonrhodes_us.conf:




upstream php {
server 127.0.0.1:9000;
}

server {
error_log /var/log/nginx/us/sharonrhodes/blog/error.log notice;
access_log /var/log/nginx/us/sharonrhodes/blog/access.log;


server_name blog.sharonrhodes.us;
root /srv/apps/us/sharonrhodes/blog;
index index.php;

location = /favicon.ico {
log_not_found off;
access_log off;
}


location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}

location / {
# This is cool because no php is touched for static content
try_files $uri $uri/ /index.php?q=$uri&$args;
}


location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
#NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_pass php;
}

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {

expires max;
log_not_found off;
}
}


/etc/nginx/conf/fastcgi.conf:




fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;

fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;


fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;


# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;

Answer



By default the Nginx source does not define SCRIPT_FILENAME in the fastcgi_params file, so unless the repo you installed Nginx from does that you need to do it yourself.



Check if the following line is in your fastcgi_params file:



fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;



and if not then add it.


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...