查看PHP.ini文件的路径
/usr/local/php/bin/php -i |head
如果此处为None说明没有加载到具体的php.ini,想想自己以前安装PHP的时候是不是忘记拷贝过来?
一般文件的位置都是在
Loaded Configuration File => /usr/local/php/etc/php.ini
若是没有或则自己的里面没有大量的注释内容(以;开头的),kk劝你还是再拷贝一份吧。
cp /usr/local/src/php-5.6.31/php.ini-production /usr/local/php/etc/php.ini
1. 禁止使用部分函数
在php中有大量的函数,但是有一些函数对我们来说是不安全的,所以需要禁掉
vim /usr/local/php/etc/php.ini
建议大家搜索一下关键字,对应的写到相应的部分
disable_functions = eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chg,rp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsock,open,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,proc_open,proc_close
2. 配置error_log
PHP排查错误有两种做法
(1)错误信息直接输出显示到网页中
vim /usr/local/php/etc/php.ini
找到(466行)display_error=更改为
display_error=on
重启服务器即可
/usr/local/apache2/bin/apachectl graceful
但是这种情况只适合临时调试,不适合长期配置,因为可能暴露我们服务器的一些信息,被人攻击,所以就要用到第二种方法
(2)错误信息输出到日志文件
vim /usr/local/php/etc/php.ini
更改一下配置,以前没有的配置要自己写
首先关闭日志输出到浏览器
display_errors = Off
然后打开错误日志开关
log_errors = On
指定错误日志的输出路径
error_log=/usr/local/php/logs/error.log
指定错误日志的级别,意思是报告所有的错误信息,除了E_STRICT这一种
error_reporting = E_ALL | E_STRICT
解释一下不同的错误级别
1 E_ERROR 报告导致脚本终止运行的致命错误
2 E_WARNING 报告运行时的警告类错误(脚本不会终止运行)
4 E_PARSE 报告编译时的语法解析错误
8 E_NOTICE 报告通知类错误,脚本可能会产生错误
30767 E_ALL 报告所有的可能出现的错误(不同的PHP版本,常量E_ALL的值也可能不同)
重启服务器后生效
/usr/local/apache2/bin/apachectl graceful