Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

File not found nginx php-fpm

Tags:

php

nginx

I've looked through every question like this here and tried to apply the stated fixes with no success.

I'm using the wordpress:4.7.3-php7.0-fpm-alpine docker image with a separate nginx container in front of it.

When I curl wordpress I get:

File not found.

When I check the wordpress container logs, I get:

127.0.0.1 -  16/Mar/2017:06:26:24 +0000 "GET /index.php" 404
127.0.0.1 -  16/Mar/2017:06:31:27 +0000 "GET /index.php" 404
127.0.0.1 -  16/Mar/2017:06:32:16 +0000 "GET /index.php" 404
127.0.0.1 -  16/Mar/2017:06:37:17 +0000 "GET /index.php" 404
127.0.0.1 -  16/Mar/2017:06:39:09 +0000 "GET /index.php" 404

The actual nginx error is:

2017/03/16 06:26:24 [error] 17#17: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 10.128.0.7, server: k8wp, request
: "GET / HTTP/1.0", upstream: "fastcgi://127.0.0.1:9000"

I'm using php 7

/var/www/html # php-fpm -v
PHP 7.0.16 (fpm-fcgi) (built: Mar  3 2017 23:07:56)
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.16, Copyright (c) 1999-2017, by Zend Technologies

My nginx config is

server {
    root /app;

    # Add index.php to the list if you are using PHP
    index index.php index.html index.htm index.nginx-debian.html;

    server_name _localhost;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass    127.0.0.1:9000;
            fastcgi_index   index.php;
            fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include         fastcgi_params;
    }
}

I'm running nginx as the user www-data:

user www-data;

According to /usr/local/etc/php-fpm.d/www.conf the user and group are uncommented and set to www-data

like image 981
Jonathan Avatar asked Mar 16 '17 06:03

Jonathan


1 Answers

The issue I had with this was that my wordpress install was in a subdirectory. So the /blog/ main index of wordpress would load, but none of the published blog entries or pages in deeper directories such as /blog/wp-admin/ would load.

To fix this, I added this block:

location /blog {
                try_files $uri $uri/ /blog/index.php?$args;
        }

This is actually explained in "Location Strategies" of the nginx wordpress recipes page.

like image 59
Rob Avatar answered Nov 15 '22 18:11

Rob