8_Php.ini 配置文件详解

2023-05-17,,

Php.ini 配置文件详解(配置php错误日志)

第一步禁用一些高风险函数 & 打开错误日志

[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 不能识的别的 

<?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 

<VirtualHost *:80>

    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/"目录改错进行测试

再测试打开网页,网页是打不开的。

《8_Php.ini 配置文件详解.doc》

下载本文的Word格式文档,以方便收藏与打印。