0

I have configured php-fpm, and nginx for development under a home folder, and I've been unable to resolve a permissions issue. It appears that php7.1-fpm.sock still refuses a connection, even though all permissions appear to be correct.

Error:

root@xps:/var/log/nginx# cat error.log 
2017/05/29 00:41:23 [crit] 27326#27326: *1 connect() to unix:/run/php/php7.1-fpm.sock failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: sub.tld.com, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.1-fpm.sock:", host: "sub.tld.com"

This occurs every time I attempt to access the web root, which should display:

<?php echo phpinfo(); ?> 

in a browser window.

nginx.conf

user darin darin;
[...]

sub.tld.com.conf for nginx

server_name sub.tld.com
root /home/darin/www
[...]
location ~ \.php$ {
    try_files $uri /index.php =404;
    fastcgi_pass unix:/run/php/php7.1-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

www.conf for php-fpm

user = darin
group = darin
[...]
listen = /run/php/php7.1-fpm.sock
[...]
listen.owner = darin
listen.group = darin
listen.mode = 0660
[...]

It appears that /run/php is a symbolic link to /var/run/php. Maybe this is intended to simplify configuration. I'm not sure, but pointing the socket file to /var/run/php and /run/php should work.

root@xps:/etc/nginx/conf.d# ls -l /var/run/php/
total 4
-rw-r--r-- 1 root  root  4 May 29 14:33 php7.1-fpm.pid
srw-rw---- 1 darin darin 0 May 29 14:33 php7.1-fpm.sock

root@xps:/etc/nginx/conf.d# ls -l /run/php/
total 4
-rw-r--r-- 1 root  root  4 May 29 14:33 php7.1-fpm.pid
srw-rw---- 1 darin darin 0 May 29 14:33 php7.1-fpm.sock

nginx processes

ps aux | grep nginx
root      5489  0.0  0.0  31884   880 ?        Ss   14:33   0:00 nginx: 
master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
darin     5490  0.0  0.0  32308  3536 ?        S    14:33   0:00 nginx: worker process

fpm processes

ps aux | grep fpm
root      5535  0.0  0.7 642880 60172 ?        Ss   14:33   0:00 php-fpm: master process (/etc/php/7.1/fpm/php-fpm.conf)                      
darin     5537  0.0  0.1 642880 12472 ?        S    14:33   0:00 php-fpm: pool www                                                            
darin     5563  0.0  0.1 642880 12472 ?        S    14:33   0:00 php-fpm: pool www 

I read loads of configuration posts, and the configuration files appear to be correct. There was one post that indicated I needed to change permissions of /var/lib/nginx, so darin:darin owns this, but I do not find a /var/lib/nginx file or folder.

Darin Peterson
  • 157
  • 1
  • 9
  • It's probably simpler to use sockets to talk to PHP rather than work out the unix:// stuff. However, I wonder if the sock file needs execute access - not sure, but worth double checking. Also check the PHP / PHPFPM error logs. – Tim May 29 '17 at 21:00
  • 1
    What permissions you have on directory /run/php ? – Alexander Tolkachev May 29 '17 at 21:05
  • The permissions on /run/php are: drwxr-xr-x 2 www-data www-data 80 May 29 14:33 php. I changed this to darin:darin, and i'm still getting the error after restarting nginx and php7.1-fpm, but it's a different error: "2017/05/29 13:55:35 [error] 29293#29293: *10 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 127.0.0.1, server: sub.tld.org, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.1-fpm.sock:", host: "sub.tld.org"" – Darin Peterson May 29 '17 at 21:13
  • The php7.1-fpm.log file indicates connection issues too: WARNING: [pool www] child 8663 exited on signal 6 (SIGABRT) after 2.678027 seconds from start [29-May-2017 15:10:44] NOTICE: [pool www] child 8689 started. I'm unsure how to resolve these issues. I'm not finding a lot of information about this... – Darin Peterson May 29 '17 at 21:51
  • How did you install 'php7'? – AlexD May 29 '17 at 22:38
  • I installed php using deb https://packages.sury.org/php/ jessie main. The problem is that one of the following packages was causing the problem: "libphp7.1-embed php-apcu php-ds php-gearman php-geoip php-gmagick php-igbinary php-imagick php-mailparse php-http php-memcache php-memcached php-msgpack php-oauth php-radius php-redis php-rrd php-stomp php-tideways php-uploadprogress php-uuid php-xdebug php-yaml" After removing and purging them, I reinstalled php7.1 modules needed, and it's working fine. @AlexanderT nailed it with the permissions issue, which was the primary problem. – Darin Peterson May 30 '17 at 03:08

1 Answers1

2

Move answer from comments

There was wrong premissions on /run/php

drwxr-xr-x 2 www-data www-data 80 May 29 14:33 php

To correct the problem, the permissions on /run/php were changed to match the nginx user:

chown darin:darin /run/php

After correcting the permissions issue, was still getting an application error when attempting to access the index.php page.

One of the following packages was causing the problem: "libphp7.1-embed php-apcu php-ds php-gearman php-geoip php-gmagick php-igbinary php-imagick php-mailparse php-http php-memcache php-memcached php-msgpack php-oauth php-radius php-redis php-rrd php-stomp php-tideways php-uploadprogress php-uuid php-xdebug php-yaml".

After removing, purging and reinstalling php7.1 modules needed, it's working as expected..

Darin Peterson
  • 157
  • 1
  • 9
Alexander Tolkachev
  • 4,608
  • 3
  • 14
  • 23