nginx php 问题定位流程

常见问题

WARNING: [pool www] server reached pm.max_children setting (5), consider raising it

php-fpm并发进程满了,修改php-fpm.conf的配置信息

pm.max_children = 30 //最大子进程 (默认是5个)

pm.start_servers = 10   //php-fpm启动起始进程数
pm.min_spare_servers = 10   //php-fpm的最小空闲进程数
pm.max_spare_servers = 24   //php-fpm的最大空闲进程数

pm.max_requests = 500   //所有子进程重启时间

然后重启 php,问题解决。

php-fpm没有运行

执行如下命令查看是否启动了php-fpm,如果没有则启动你的php-fpm即可

netstat -ant | grep 9000

 没有运行为空,有运行显示

tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN

启动方法

sudo /usr/local/php/sbin/php-fpm //sudo 启动

/usr/local/php/sbin/php-fpm -R //以root身份启动

常用

确定php.ini文件的位置
 php --ini   
启动php-fpm
/usr/local/php/sbin/php-fpm

重启php-fpm - php小小菜鸟 - 博客园

日志记录

nginx是一个web服务器,因此nginx的access日志只有对访问页面的记录,不会有php 的 error log信息。

nginx把对php的请求发给php-fpm fastcgi进程来处理,默认的php-fpm只会输出php-fpm的错误信息,在php-fpm的errors log里也看不到php的errorlog

原因是php-fpm的配置文件php-fpm.conf中默认是关闭worker进程的错误输出,直接把他们重定向到/dev/null,所以我们在nginx的error log 和php-fpm的errorlog都看不到php的错误日志。

调试起来就很痛苦了。解决nginx下php-fpm不记录php错误日志的办法:

1.修改php-fpm.conf中配置 没有则增加
catch_workers_output = yes
error_log = log/error_log

2.修改php.ini中配置,没有则增加
log_errors = On
error_log = "/usr/local/lnmp/php/var/log/error_log"
error_reporting=E_ALL&~E_NOTICE

3.重启php-fpm
当PHP执行错误时就能看到错误日志在"/usr/local/lnmp/php/var/log/error_log"中了

PHP-FPM 输出PHP错误日志 - etwits - 博客园

Nginx报错:nginx: [error] invalid PID number in "/run/nginx.pid"的解决方案
 

nginx -s reload

nginx -c /etc/nginx/nginx.conf

killall nginx

nginx

nginx -s reload

你可能感兴趣的:(php,nginx,服务器)