PHP执行权限导致”FastCGI sent in stderr: “Primary script unknown”

在近期一次上线web应用部署过程中,相同的配置在测试环境中并没有出现任何问题。部署在生产环境3台服务器上时,一直出现“file not found”,查看nginx服务器的error日志出现了如下错误:

020/07/05 16:32:05 [error] 28033#0: *3 FastCGI sent in stderr: “Primary script unknown” while reading response header from upstream, client: 192.0.61.175, server: baogebiji.com, request: “POST /www/getClientInfoList.php HTTP/1.1″, upstream: “fastcgi://unix:/dev/shm/php-cgi.sock:”, host: “192.0.61.176“, referrer: “http://192.0.61.176/www

生产环境的部署脚本及配置文件均一摸一样,出现这样的问题感觉到很恐慌。

一、测试php是否可以正常运行。


在网站根目录下,部署test.php文件,访问192.0.61.176

PHP执行权限导致"FastCGI sent in stderr: "Primary script unknown"

test.php脚本,复制到www目录,访问网址192.0.61.176/www/test.php

PHP执行权限导致"FastCGI sent in stderr: "Primary script unknown"

检查nginx.conf配置文件,与测试文件完全相同。网站根目录下打开php文件正常。因此php-fpm应该运行也是正常的。

二、检查网站运行权限


1,检查nginx.conf文件,nginx运行的用户为app100

2,检查网站目录,均为app100

3,检查php运行权限。

$ cat /usr/local/php/etc/php-fpm.conf

;;;;;;;;;;;;;;;;;;;;;

; FPM Configuration ;

;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;

; Global Options ;

;;;;;;;;;;;;;;;;;;

[global]

pid = run/php-fpm.pid

error_log = log/php-fpm.log

log_level = warning

emergency_restart_threshold = 30

emergency_restart_interval = 60s

process_control_timeout = 5s

daemonize = yes

;;;;;;;;;;;;;;;;;;;;

; Pool Definitions ;

;;;;;;;;;;;;;;;;;;;;

[www]

listen = /dev/shm/php-cgi.sock

listen.backlog = -1

listen.allowed_clients = 127.0.0.1

listen.owner = www

listen.group = www

listen.mode = 0666

user = www

group = www

发现usergroup均使用www用户,修改以上www用户为app100后,重启systemctl restart php-fpm。故障解除。

总结


出现该问题的原因事后回忆,因默认安装使用的均为www用户。在应用提出希望使用app100用户可以拥有更新网站的权限后,将nginx及网站权限调整为app100php-fpm运行权限为www,网站二级目录没有访问权限导致。

原创文章,作者:shengbao,如若转载,请注明出处:https://baogebiji.com/586.html

发表评论

电子邮件地址不会被公开。