It's a matter asked thousand times and since I hate write posts, I read and search for all possible documentation before get to the annoying part (for me) which is writing.

So I have Nginx & PHP-FPM up and running with CentOS 7.2. PHP-FPM is working with /var/run/php-fpm/php-fpm.sockproperly declared in www.conf:

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses on a
;                            specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = /var/run/php-fpm/php-fpm.sock

This is my mywebsite.conf:

server {
    listen   80;
    server_name  www.mywebsite.net;

    # note that these lines are originally from the "location /" block
    root   /usr/share/nginx/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    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;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;

Also I have cgi.fix_pathinfo=0 in php.ini.

I have restarted/reloaded Nginx and PHP-FPM services, restarted the whole server, and got nothing. I can't display .php files, they're just downloads.

What am I missing?

Thanks in advance.


Are there any other server blocks in Nginx configuration, especially with listen 80 default or default_server directives?
Also try to add access_log and error_log to Nginx configuration to find out are there any access to that server and are there any errors.

|improve this answer|||||
  • Yes, there's actually another server block: server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } – Alain Nov 19 '16 at 18:02
  • So it means that right now you have to use www.mywebsite.net name to access your site with php configured. For all other names even mywebsite.net you will access default section and simply download files as is. Simple solution would be remove default_server from default server block and use it on your www.mywebsite.net server block. But also I recommend you to put all server names here and place files on different document root, so there will be no chance to download source php files with any fake server name. – Fedor Dikarev Nov 20 '16 at 9:20

sudo vim /etc/php-fpm.d/www.conf

DO NOT UNCOMMENT listen.mode = 0660

|improve this answer|||||
  • What are you saying? that the user should open /etc/php-fpm.d/www.conf in an editor, but change nothing?  That doesn’t make any sense. – G-Man Says 'Reinstate Monica' Mar 17 '19 at 2:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.