宝塔(BT)面板-Nginx如何开启PHP报错 作者: Chuwen 时间: 2017-06-05 分类: Nginx ##使用宝塔(BT)面板搭建的 `LNMP` 环境(L:`Linux`,N:`Nginx`,M:`MySQL`,P:`PHP`),本地测试代码时,没有发现什么问题,但是,放到服务器上时就出现 `500` 错误了,没有任何错误提示,查看日志,也只能看到 `500`,很是纳闷,然后Goole查了些资料,在这里做一个笔记。 ##首先: > ###`Q`: 什么是PHP-CGI ? > ####`A`: GI即通用网关接口(Common Gateway Interface),它是一段程序,通俗的讲CGI就象是一座桥,把网页和WEB服务器中的执行程序连接起来,它把HTML接收的指令传递给服务器的执行程序,再把服务器执行程序的结果返还给HTML页。CGI 的跨平台性能极佳,几乎可以在任何操作系统上实现。 > ####CGI方式在遇到连接请求(用户 请求)先要创建cgi的子进程,激活一个CGI进程,然后处理请求,处理完后结束这个子进程。这就是fork-and-execute模式。所以用cgi方式的服务器有多少连接请求就会有多少cgi子进程,子进程反复加载是cgi性能低下的主要原因。都会当用户请求数量非常多时,会大量挤占系统的资源如内 存,CPU时间等,造成效能低下。 > ###`Q`: 什么是PHP-FPM ? > ####`A`: 大家都知道,PHP的解释器是PHP-CGI。PHP-CGI只是个CGI程序,他自己本身只能解析请求,返回结果,不会进程管理(皇上,臣妾真的做不到啊!)所以就出现了一些能够调度PHP-CGI进程的程序,比如说由LightHttpd分离出来的SPAWN-FCGI。 > ####好了PHP-FPM也是这么个东东,在长时间的发展后,逐渐得到了大家的认可(要知道,前几年大家可是抱怨PHP-FPM稳定性太差的),也越来越流行。 >##PHP-CGI与PHPH-FPM的区别: >###PHP-CGI是被调用的进程,PHP-FPM是配置和管理进程的。 ##Nginx如何开启PHP报错: ###1.修改 `php.ini` 开启报错 ```shell #查找 php.ini 文件 find / -name php.ini ``` ####可能会看到如下结果: ![执行find / -name php.ini命令][1] ####然后修改 `php.ini` 文件(自己应该知道要修改那个文件吧...不知道就全改),我代码是运行在PHP7.1环境下报错500的,所以我就修改这个路径的php.ini文件:`/www/server/php/71/etc/php.ini` ```shell vi /www/server/php/71/etc/php.ini ```` > ###进入编辑状态后,按 / 键,输入 display_errors = On,然后按 Enter 键,如果出现如图左下角的提示: ![#按 / 键,输入 display_errors = On,然后按 Enter键][2] > ###按 / 键,输入 display_errors = Off,然后按 Enter 键,就可能会跳转到如图所示的地方: ![按 / 键,输入 display_errors = Off,然后按 Enter 键][3] > ###然后按 a 键,进入编辑状态,然后把绿色光标移动到最后面: > ![进入编辑状态,然后把绿色光标移动到最后面][4] > ###然后按两次删除键,删除 ff,然后输入 n ,这样就表示开启PHP报错: > ![按两次删除键,删除 ff,然后输入 n ][5] > ###然后按 ESC 键,输入 :wq ,然后按 Enter 键,退出编辑并状保存:![退出编辑并状保存][6] --- > ###如果输入 display_errors = On,然后按 Enter 键,如果没有出现如图左下角的提示: ![#按 / 键,输入 display_errors = On,然后按 Enter键][7] > ##那么你直接忽略这步修改 `php.ini` 的操作 ###2.修改 `php-fpm.conf` 文件 > ```php > ###找到php-fpm.conf路径 > find / -name php-fpm.conf > ``` >![请输入图片描述][8] > ###然后输入 `vi php-fpm.conf的路径`,进入编辑状态,然后按 a 键,把光标移动到最后一行,再按数字键坐上位置的 End 键,按回车,然后添加: `php_flag[display_errors] = on`,![请输入图片描述][9] > ###然后按 ESC 键,输入 :wq ,然后按 Enter 键,退出编辑并状保存 >##3.最后重启PHP-FPM读取配置文件即可(不会自己搜)。 [1]: https://wordpress-ogdn-net.oss-cn-hangzhou.aliyuncs.com/wp-content/uploads/2017/06/20170605113406.png [2]: https://wordpress-ogdn-net.oss-cn-hangzhou.aliyuncs.com/wp-content/uploads/2017/06/20170605114730.png [3]: https://wordpress-ogdn-net.oss-cn-hangzhou.aliyuncs.com/wp-content/uploads/2017/06/20170605115053.png [4]: https://wordpress-ogdn-net.oss-cn-hangzhou.aliyuncs.com/wp-content/uploads/2017/06/20170605115419.png [5]: https://wordpress-ogdn-net.oss-cn-hangzhou.aliyuncs.com/wp-content/uploads/2017/06/20170605115614.png [6]: https://wordpress-ogdn-net.oss-cn-hangzhou.aliyuncs.com/wp-content/uploads/2017/06/20170605115941.png [7]: https://wordpress-ogdn-net.oss-cn-hangzhou.aliyuncs.com/wp-content/uploads/2017/06/20170605114730.png [8]: https://wordpress-ogdn-net.oss-cn-hangzhou.aliyuncs.com/wp-content/uploads/2017/06/20170605120647.png [9]: http://wordpress-ogdn-net.oss-cn-hangzhou.aliyuncs.com/wp-content/uploads/2017/06/20170605120804.png 标签: PHP, Nginx