- 400 #请求语法有错误(参数个数不对,请求方式不对),一种情况是服务器接收2个参数,但请求传的参数个数不是2个(在yii中多传可以少传不行);还有可能是服务器限制请求方式必须是get, 但是请求的一方使用的是post,put等。比如yii做微信APP支付的时候,因为框架的限制,post请求需要验证CSRF,而微信没有传CSRF参数。所以就不能接收到微信的请求,报400。解决办法是在对应的控制器里关闭CSRF验证机制。
- 500 #服务器内部错误,可能是服务器配置出现错误, 可能是代码的错误(语法,逻辑,PHP扩展是不是没有安装之类的), 但是也不要忽略数据库, 数据库的字段约束类型, 长度, 索引等是不是造成了存储数据的时候违反了列的完整性约束. 还有可能是模型里设置rules规则导致没保存成功. 很多种可能
- 403 #可能配置nginx的虚拟主机时, 没有加上 index index.php index.html 等 . 还有可能就是项目配置的根目录不是index.php, 需要加上 autoindex on 开启目录 (2)文件的权限不够也会导致403,比如文件设置0600,那么访问的时候会出现403.
- 502 #作为网关或者代理工作的服务器尝试执行请求时, 从上游服务器接收到无效的响应 这篇文章写得nice--->https://www.cnblogs.com/liluxiang/p/9360944.html 分析了出现502可能的原因。(202017)在此再记录一个可能的原因,今天遇到了,也是之前遇到过,只不过忘记了。就是PHP切换版本或者因为某些原因重新安装了pool.d/www.conf 配置文件,里面的默认设置是
listen = /run/php/php7.2-fpm.sock #默认是这个,但是我nginx配置使用的不是这个,是127.0.0.1:9000.所以需要改成 listen = 127.0.0.1:9000
简单提一下重新安装pool.d/www.conf 的情况1 Configuration file '/etc/php/7.2/fpm/pool.d/www.conf' 2 ==> File on system created by you or by a script. 3 ==> File also in package provided by package maintainer. 4 What would you like to do about it ? Your options are: 5 Y or I : install the package maintainer's version 6 N or O : keep your currently-installed version 7 D : show the differences between the versions 8 Z : start a shell to examine the situation 9 The default action is to keep your current version. 10 *** www.conf (Y/I/N/O/D/Z) [default=N] ? y 11 Installing new version of config file /etc/php/7.2/fpm/pool.d/www.conf ... 12 13 //当遇到上面的选项的 时候,选择`N`保持现在的版本。如果选择`Y`,重新安装www.conf文件了,导致之前配置的listen = 127.0.0.1:9000没有了。 PHP项目会遇到502错误, 因为pool.d/www.conf文件中默认设置是socket通信,而不是9000端口。
还可能是php-fpm修改完没有重启,修改listen = 127.0.0.1:9000 之后没有重启。我使用 ps aux | grep php 显示有php-fpm work进程。使用 netstat -ant | grep 9000 没有内容,说明还是在监听socket文件。 于是重新启动php-fpm,解决。--https://cloud.tencent.com/developer/article/1584302
还有如果是本地开发中遇到502,比如我使用phpstudy配置网站出现502(其他原因都排查了),发现是因为开启 了VPN导致的,关掉VPN就好了。 - 504 #gateway time-out 作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。
504 的一些解决方案:https://blog.csdn.net/luozi007/article/details/76152933/
server reached pm.max_children setting (50), consider raising it https://blog.csdn.net/encircles/article/details/80503756 如果pm.max_requests没有设置重启参数,默认为不限制最大服务次数,也就是子进程永远不重启,经验表明,长时间不重启子进程会导致系统负载异常,处理时间变长等现象。 https://segmentfault.com/a/1190000015920910 - 502 and 504: https://blog.51cto.com/renzhiyuan/1883961
- 404 # 请求的资源不存在, 这个排查可以去看nginx的error.log 路径不对或者文件本就不存在 , 有可能是root 设置的根目录不对, 因为具体寻找是root 设置的目录 + 请求的URI 举个栗子: 文件所在的路径是/home/project/phpinfo, 然后请求的URI是/phpinfo 然后root 设置的是/home/project/phpinfo 最后访问的路径变成了/home/project/phpinfo/phpinfo 那肯定找不到文件, 所以root设置到/home/project/ 即可最后的/ 加不加都行, 两个//和一个/一样 这种情况一般是在location不是全匹配的 时候 具体参考https://www.cnblogs.com/bneglect/p/11550878.html