• 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
    这个原因导致服务器上所有的PHP项目无法访问 ^_^ 巨爽。哈哈哈
    简单提一下重新安装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端口。
    View Code

     还可能是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