Nginx + PHP5-FPM doesn't work

OS: Ubuntu Server 14

Nginx 1.6.2

PHP 5

This is my nginx configuration:

server {

listen 80 default_server;

listen [::]:80 default_server ipv6only=on;

root /usr/share/nginx/html;

index index.php index.html index.htm;

server_name 23.239.13.154;

location / {

try_files $uri $uri/ =404;

try_files $uri $uri/ /index.php?q=$uri&$args;

}

error_page 404 /404.html;

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root /usr/share/nginx/html;

}

location ~ .php$ {

try_files $uri =404;

fastcgisplitpath_info ^(.+.php)(/.+)$;

fastcgi_pass unix:/var/run/php5-fpm.sock;

fastcgi_index index.php;

fastcgiparam SCRIPTFILENAME $documentroot$fastcgiscript_name;

include fastcgi_params;

}

}

This configuration worked fine for 40 days.

Now, when I try execute some php script, the script is downloaded. :x

Nginx version: 1.4.6 and 1.6.2. Both versions have the same problem. :cry:

I tryed a lot of different approachs, but stil not working.

Why sometimes nginx is so hard?

I need to use Nginx + Wordpress.

1 Reply

Just a guess, but I'm pretty sure you don't want tryfiles inside your php block. tryfiles is processed in an earlier phase than FastCGI so will take precedence. So I think you're essentially telling nginx to find the php file and return it directly (which sounds like what is happening). Perhaps you accidentally added that line into that block recently?

E.g., the general try_files in the / block will redirect non-static requests to the WordPress PHP-based script, which will then usually be handed off to FastCGI through the php block definition.

If removing that doesn't help, I would suggest enabling debugging (add "debug" to your error log) and then reviewing the log for a controlled request which will let you know exactly how it's being processed This assumes you're using a binary with debug support enabled (use -V to check for "with-debug").

BTW, when I was testing an nginx-fronted WP configuration a while back, my root try_files only used /index.php?$args (e.g., no $uri) - if it's working for you this way it might not matter, but I don't think you need/want it.

– David

Reply

Please enter an answer
Tips:

You can mention users to notify them: @username

You can use Markdown to format your question. For more examples see the Markdown Cheatsheet.

> I’m a blockquote.

I’m a blockquote.

[I'm a link] (https://www.google.com)

I'm a link

**I am bold** I am bold

*I am italicized* I am italicized

Community Code of Conduct