Reputation: 319
On my vagrant box , centtos 7, i had installed php7.0.3 and nginx 1.9.12. the php config www.conf. this file in the /usr/local/php/etc/php-fpm.d/ directory, Its configuration like this
user = www
group = www
;listen = /tmp/php-fpm.sock
listen = 127.0.0.1:9000
listen.owner = www
listen.group = www
and the nginx config. the file vm.demo.com.conf in the /usr/local/nginx/conf/vhost/ directory. Its configuration like this
server {
listen 80;
server_name vm.demo.com;
index index.html index.htm index.php;
root /data/wwwroot/demo;
location / {
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
}
location ~ .*\.(php|php5)?$ {
#fastcgi_pass unix:/tmp/php-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
access_log logs/demo.log main;
}
in the nginx conf, if i use fastcgi_pass 127.0.0.1:9000 and the php-fpm.conf listen 127.0.0.1:9000, They are working properly bug if i use the socket configuration:
php www.conf
user = www
group = www
listen = /tmp/php-fpm.sock
listen.owner = www
listen.group = www
nginx vm.demo.com.conf
location ~ .*\.(php|php5)?$ {
fastcgi_pass unix:/tmp/php-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
the nginx show 502 Bad gateway. in the nginx error.log show this.
2016/03/14 21:17:04 [crit] 4208#0: *5 connect() to unix:/tmp/php-fpm.sock failed (2: No such file or directory) while
connecting to upstream, client: 192.168.1.101, server: vm.demo.com, request: "GET /test.php HTTP/1.1",
upstream: "fastcgi://unix:/tmp/php-fpm.sock:", host: "vm.demo.com"
2016/03/14 21:17:04 [crit] 4208#0: *5 connect() to unix:/tmp/php-fpm.sock failed (2: No such file or directory) while
connecting to upstream, client: 192.168.1.101, server: vm.demo.com, request: "GET /test.php HTTP/1.1",
upstream: "fastcgi://unix:/tmp/php-fpm.sock:", host: "vm.demo.com"
2016/03/14 21:18:01 [crit] 4208#0: *5 connect() to unix:/tmp/php-fpm.sock failed (2: No such file or directory) while
connecting to upstream, client: 192.168.1.101, server: vm.demo.com, request: "GET /test.php HTTP/1.1",
upstream: "fastcgi://unix:/tmp/php-fpm.sock:", host: "vm.demo.com"
when i check the /tmp/php-fpm.sock file, it's existing
[root@vbox1 vhost]# ll /tmp/php-fpm.sock
srw-rw---- 1 www www 0 Mar 14 21:06 /tmp/php-fpm.sock
this are php and nginx running status:
[root@vbox1 vhost]# systemctl status php-fpm.service
● php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/etc/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2016-03-14 21:06:27 CST; 42min ago
Process: 4189 ExecStop=/bin/kill -SIGINT $MAINPID (code=exited, status=0/SUCCESS)
Main PID: 4198 (php-fpm)
CGroup: /system.slice/php-fpm.service
├─4198 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
├─4199 php-fpm: pool www
└─4200 php-fpm: pool www
Mar 14 21:06:27 vbox1 systemd[1]: Started The PHP FastCGI Process Manager.
Mar 14 21:06:27 vbox1 systemd[1]: Starting The PHP FastCGI Process Manager...
[root@vbox1 vhost]# systemctl status nginx.service
● nginx.service - nginx
Loaded: loaded (/etc/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2016-03-14 21:06:35 CST; 42min ago
Process: 4180 ExecStop=/usr/local/nginx/sbin/nginx -s quit (code=exited, status=0/SUCCESS)
Process: 4206 ExecStart=/usr/local/nginx/sbin/nginx (code=exited, status=0/SUCCESS)
Main PID: 4207 (nginx)
CGroup: /system.slice/nginx.service
├─4207 nginx: master process /usr/local/nginx/sbin/nginx
├─4208 nginx: worker process
└─4209 nginx: worker process
Mar 14 21:06:35 vbox1 systemd[1]: Starting nginx...
Mar 14 21:06:35 vbox1 systemd[1]: Started nginx.
Can someone help me? If anyone encountered the same problem
Upvotes: 4
Views: 55679
Reputation: 3333
Basically, the problem arises with ONE process (php-fpm) setting up the sock in the /tmp path, but it would not be visible by ANOTHER process (nginx).
There is a setting in the service config, which would block files created by different process, even though using the same user.
Find your service config file (ex: /etc/systemd/system/myapp.service) and then on add this setting: PrivateTmp=No to both your services (php and nginx).
[Service]
...
PrivateTmp=No
more info about systemd units here:
https://www.freedesktop.org/software/systemd/man/systemd.unit.html
Upvotes: 5
Reputation: 9
I had this problem, you can do this:
chmod 777 yourpath/php-fpm.sock
This worked for me.
Upvotes: -5
Reputation: 575
For all those who use Homestead inside Vagrant:
I solved simply reloading vagrant with provision flag: from project root:
cd Homestead
and then:
vagrant reload --provision
in this manner recompile all configurations
Upvotes: 0
Reputation: 11
You need to change the listen.owner and the listen.group
listen.owner = nginx
listen.group = nginx
In my case in this file: /etc/php-fpm.d/www.conf
The socket must be the same in you nginx block (like vhost in apache). I also moved the socket under /var/sockets
Upvotes: 1
Reputation:
You could try changing user in /usr/local/php/etc/php-fpm.d/www.conf
to nginx and restart service.
user = nginx
group = nginx
listen = /tmp/php-fpm.sock
Upvotes: 0
Reputation: 101
I have met the same problem. And I just change the socket path to another directory but '/tmp', Then everything goes OK.
Upvotes: 10
Reputation: 850
I have found a config (php5) that continues to use the unix socket and does not involve editing any other config files (except the nginx default site file).
location ~ \.php$ {
fastcgi_pass unix:/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
# \Add following to use sqlite as db.
fastcgi_param DB_CONNECTION sqlite;
}
Note:- the unix socket is not at /run/php/
(though it is for php7).
The include fastcgi_params;
is required to prevent the php file downloading instead of being interpreted.
For completeness the following is my entire default file.
index index.php index.html index.htm;
server {
listen 80;
server_name sponk.co.uk;
rewrite_log on;
root /vagrant/public_html;
try_files $uri $uri/ /index.php$is_args$args;
location ~ \.php$ {
fastcgi_pass unix:/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
Upvotes: 1