解决了困扰了几天的问题
最近接了一个已有现成代码的项目,后台和接口是用PHP语言开发, 框架是thinkPHP, 前端用的是 uniapp, 主要是做一些新的功能开发和维护, 之前一直在Linux下开发, 最近在MAC下搭建了nginx + PHP + mysql 的环境做本地开发;
在开发的过程 遇到错误, 前端只显示An error occurred. Nginx 500 默认错误信息
第一时间认为没有开启框架的debug模式, 于是打开了thinkPHP的debug开关, 结果是一样不显示
于是尝试打开PHP配置文件错误信息的开关
php-fpm conf 文件修改为:
php_flag[display_errors] = on
php_admin_flag[log_errors] = on
php_admin_value[error_reporting] = E_ALL
php.ini 修改为:
display_errors = On
log_errors = On
发现没有作用, 而且日志文件也不显示错误日志, 配置文件应该是没有生效, 来回尝试了多次还是一样. 怎么会不生效呢, 明明是开启了呀?
研究框架代码发现thinkPHP开启debug模式 会把PHP的错误开关停掉, 于是注释带后前端页面是一样显示默认的错误页面
纳闷了几天, 没有成功的反馈,挫败感油然而生,
PHP开发的时候不显示提示错误信息,太影响开发效率, 不然也就算了.
今天重新想了一下问题, 为什么Nginx会一直显示这个500的页面, 而不是显示php-fpm 的错误提示信息呢. 既然这个页面是Nginx的 ,应该是nginx的配置问题, 没有把php的错误信息显示出来, 看了设置里面与一段
error_page 500 502 503 504 /50x.html;
于是把它注释掉
结果显示了框架的错误信息, 心里舒服呀[笑哭]
问题的核心: PHP框架错误信息的返回的状态码是500, Nginx接收到PHP的500状态码, 按照nginx配置直接返回500状态 默认页面, 而不是返回thinkPHP 的信息页面
开发代码也是一个熟能生巧的过程, 跟打怪兽一样 积累经验 不断升级
程序员自由职业赚钱养家不容易, 一个人干一个团队的事情, 而且必须是全栈, 前后端都要熟悉和开发.