Using the latest version of nginx (1.10.0) and php-fpm (PHP 7.0.6) on 64-bit arch linux.
When attempting to request index.php for a DokuWiki installation, I get the following error:
2016/05/21 22:09:50 [error] 11099#11099: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 192.168.70.3, server: doku.test.com, request: "GET /install.php HTTP/1.1", upstream: "fastcgi://unix:/run/php-fpm/php-fpm.sock:", host: "doku.test.com"
Here is the relevant server config:
server {
listen 80;
server_name doku.test.com;
root /var/www/doku/public_html/;
access_log /var/log/nginx/scripts.log scripts;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Here is fastcgi_params:
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 REQUEST_SCHEME $scheme;
fastcgi_param HTTPS $https if_not_empty;
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;
As can be seen in my server config, I am attempting to log the output of the SCRIPT_FILENAME
parameter as all of my researching seems to be pointing to that as the culrpit. Here is the relevant part of nginx.conf:
log_format scripts '$document_root$fastcgi_script_name > $request';
When requesting the index.php page, the below is generated in scripts.log
:
/var/www/doku/public_html/index.php > GET /index.php HTTP/1.1
Doing an ls on that file:
-rwxr-xr-x 1 nginx nginx 182 May 21 06:45 /var/www/doku/public_html/index.php
It's worth noting that both the nginx daemon and the php-fpm daemon are configured to run as the nginx user using the nginx group. I'm at a loss as to why I am getting the initial error as the logging as effectively proven that SCRIPT_FILENAME
is indeed pointing to the correct path.
Out of all the ServerFault answers I reviewed, adding that param to the server config seemed to be the #1 solution to my error, but it does not seem to fix it in my case.
Any suggestions?
Best Answer
First in check if you have set the correct listen address in your
www.conf
file for PHP-FPM (FastCGI Process Manager). So openwww.conf
file (location:/etc/php5/fpm/pool.d/www.conf
) and it should see somthing like this:Under the listen address, check if you have set the loopback address (it identifies your server) and the port number. Then in your
nginx.conf
file changefastcgi_pass
to127.0.0.1:8080
, so in the end it should look like:Notice I have used port 8080 in the example, you may need to chnage it.