十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
Php.ini 配置文件详解(配置php错误日志)
创新互联建站网络公司拥有10年的成都网站开发建设经验,千余家客户的共同信赖。提供成都网站建设、成都网站设计、网站开发、网站定制、买链接、建网站、网站搭建、成都响应式网站建设、网页设计师打造企业风格,提供周到的售前咨询和贴心的售后服务
第一步禁用一些高风险函数 & 打开错误日志
[root@OBird etc]# vim /usr/local/php/etc/php.ini
disable_functions = eval,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,fsockopen
display_errors = On
[root@OBird etc]# apachectl -t
Syntax OK
[root@OBird etc]# apachectl restart
下面来做测试:
[root@OBird etc]# vim /data/www/forum.php
在forum.php 下加一行php 不能识的别的
wellcome to wuhan 2016-10-01
刷新网页,网页报错了。
此时我们关掉 display_error off,再次刷新网页(500一般是PHP的脚本有问题).
这一项打开会暴露我们的一些信息,所以保持黙认关掉。
定义我们的错误日志的保路径:
;error_log = php_errors.log
; Log errors to syslog (Event Log on Windows).
;error_log = syslog
----------------------------------------------
error_log = /usr/local/php/logs/php_errors.log (日志保存的绝对路径)
退出确认一下这个目录存不存在
[root@OBird etc]# ls /usr/local/php/logs
ls: cannot access /usr/local/php/logs: No such file or directory #目录不存在
[root@OBird etc]# mkdir /usr/local/php/logs/ #创建目录
[root@OBird etc]# chmod 777 !$
chmod 777 /usr/local/php/logs/ # 更改目示权根为777 ,让apache 可写。
修改日起的级别
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
[root@OBird ~]# apachectl graceful
再次刷新网页,依然是看不到相关的任何息,但是我们可以查看日志。
这样可以帮助我们不暴露我们的信息,也保存了错误日志,有助我们排查问题。
[root@OBird ~]# cat /usr/local/php/logs/php_errors.log
[01-Oct-2016 12:36:37 UTC] PHP Fatal error: Directive 'magic_quotes_runtime' is no longer available in PHP in Unknown on line 0
[01-Oct-2016 12:42:55 UTC] PHP Fatal error: Directive 'magic_quotes_runtime' is no longer available in PHP in Unknown on line 0
[01-Oct-2016 12:43:17 UTC] PHP Fatal error: Directive 'magic_quotes_runtime' is no longer available in PHP in Unknown on line 0
[01-Oct-2016 12:45:36 UTC] PHP Fatal error: Directive 'magic_quotes_runtime' is no longer available in PHP in Unknown on line 0
分割线———————————————————————————————————————分割线
;open_basedir = 这是一个安全选项,
将它配置为 open_basedir = /data/www2:/tmp
/data/www2 这是一个错误的目录,此时去访问网站刷出来的是白页(同上 (500一般是PHP的脚本有问题).)
查看错误日志
—————————————————————————————————————————————
没有达到理想中的的实验效果;且记录下来再说吧.没搞明白magic_quotes_runtime 这个东西到底该怎么来设置。
[root@OBird ~]# cat /usr/local/php/logs/php_errors.log
[01-Oct-2016 12:36:37 UTC] PHP Fatal error: Directive 'magic_quotes_runtime' is no longer available in PHP in Unknown on line 0
[01-Oct-2016 12:42:55 UTC] PHP Fatal error: Directive 'magic_quotes_runtime' is no longer available in PHP in Unknown on line 0
[01-Oct-2016 12:43:17 UTC] PHP Fatal error: Directive 'magic_quotes_runtime' is no longer available in PHP in Unknown on line 0
[01-Oct-2016 12:45:36 UTC] PHP Fatal error: Directive 'magic_quotes_runtime' is no longer available in PHP in Unknown on line 0
[02-Oct-2016 06:06:57 UTC] PHP Fatal error: Directive 'magic_quotes_runtime' is no longer available in PHP in Unknown on line 0
[02-Oct-2016 06:11:13 UTC] PHP Fatal error: Directive 'magic_quotes_runtime' is no longer available in PHP in Unknown on line 0
—————————————————————————————————————————————
如果一台服务器上有多个网站,那么我们在
[root@OBird etc]# vim /usr/local/php/etc/php.ini 就无法进么区分限制了。
所以必须在虚拟机上来做一些设置,一个虚拟机一个配置
[root@OBird ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
DocumentRoot "/data/www"
ServerName www.test.com
ServerAlias www.aaa.com
ServerAlias www.bbb.com
php_admin_value open_basedir "/data/www/:/tmp/" #加一句,
apache 的好处在于可以区分不同的虚拟主机,
注释掉里面的目录配置([root@OBird ~]# vim /usr/local/php/etc/php.ini )
然后将php_admin_value open_basedir "/data/www9/:/tmp/"目录改错进行测试
再测试打开网页,网页是打不开的。