在編譯php-fpm時,若沒有指定fpm用戶,在配置文件中也沒有指定用戶,則sock文件會由root(啟動php-fpm的用戶)創建,其權限是srw-rw----
。
而nginx一般由nginx用戶啟動,會導致無法讀取sock文件,造成nginx返回502錯誤。
nginx日志會記錄錯誤如下:
2018/09/12 17:06:17 [crit] 30735#0: *1 connect() to unix:/dev/shm/php-cgi.sock failed (13: Permission denied) while connecting t o upstream......
解決辦法是在配置文件中指定listen用戶
; Set permissions for unix socket, if one is used. In Linux, read/write ; permissions must be set in order to allow connections from a web server. Many ; BSD-derived systems allow connections regardless of permissions. ; Default Values: user and group are set as the running user ; mode is set to 0666 listen.owner = fcgi listen.group = wwwgroup listen.mode = 0666
改完后重啟php-fpm即可
注:sock文件存放在/dev/shm目錄下,
此目錄下將sock文件放在內存里面,有助於性能提升