今天把vps上php5.3升级到了php5.4,我采用的是nginx+php-fpm的架构,nginx通过php-fpm的socks文件来连接。
结果报错:
connect() to unix:/tmp/php-cgi.sock failed (13: Permission denied) while connecting to upstream
我检查了一下 /tmp/php-cgi.sock 发现该文件拥有者是root,而nginx和php-fpm都是www用户来运行的,按理讲,这个sock文件也应该是www才对。
后来发现在php-fpm.conf中有这么一段配置:
; 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 0660
;listen.owner = www
;listen.group = www
;listen.mode = 0660
很奇怪,按照说明,默认应该使用 user和group配置项来设置权限,但实际上没有。不管怎么样,通过手动指定一下这里的配置就解决问题了。
; 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 0660
listen.owner = www
listen.group = www
;listen.mode = 0660