天天看点

php相关配置

查看php配置文件位置

/usr/local/php/bin/php -i|grep -i "loaded configuration file" 

或者phpinfo();

但是有些情况下使用-i是不准的。

如果想找的更准。比如找11.com,那么可以在11.com的根目录下创建phpinfo()文件。浏览器访问它。查看配置文件

cp -r /usr/local/src/php-5.6.30/php.ini-production /usr/local/php/etc/php.ini

vi /usr/local/php/etc/php.ini //搜索disable_functions

date.timezone //定义时区

date.timezone =Asia/shanghai

disable_functions //安全函数(禁止掉这些比较危险的函数)

eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,proc_open,proc_close 

在生产环境中会把phpinfo禁掉。因为有时候不小心写了一个phpinfo文件,上传上去被黑客发现。能够看到系统的目录。不安全

eval:一句话木马使用了该函数如果把这个函数禁了,即使上传了木马也没办法解析

日志相关:

error_log, log_errors, display_errors, error_reporting

display_errors = On //会把错误信息直接显示在浏览器上

(生产环境该参数改成Off,为了避免暴露信息)但是有一个问题,就是页面什么都不显示(白页)。那么还需要配置错误日志。

log_errors = On //表示错误日志打开状态

error_log = /tmp/php_errors.log //定义错误日志所在位置

还需要定义error_log的级别。如果级别很高的话,很严谨的话,只会记录一些比较严峻的错误,不太严峻的就不记录,比如警告等、所以放松些

error_reporting //定义日志的级别

生产环境使用

E_ALL & ~E_NOTICE (Show all errors, except for notices)

模拟:把phpinfo函数禁掉。

1.phpinfo放入disable_functions里

2.display_errors = Off

3.log_errors = On

4.error_log = /tmp/php_errors.log

5./usr/local/apache2.4/bin/apachectl -t && graceful

6.ll /tmp/

srwxrwxrwx. 1 mysql mysql 0 12月 11 18:39 mysql.sock

-rw-r--r--. 1 daemon daemon 290 12月 11 21:23 php_errors.log

7.cat /tmp/php_errors.log 

[11-Dec-2017 21:23:49 Asia/shanghai] PHP Warning: phpinfo() has been disabled for security reasons in /data/wwwroot/discuz2/lsx/1.php on line 2

php_errors.log的属主实际是httpd的属主daemon。因为这个日志是以daemon这个进程的身份创建的。当你定义了一个日志,但是日志始终没有生成,就要看一下定义的目录有没写权限,而且写文件的进程是这个进程。

为了保守起见,可以把这个文件创建好/tmp/php_errors.log,在授权777权限

grep error_log /usr/local/php/etc/php.ini

error_log = /tmp/php_errors.log

;error_log = syslog

本文转自 虾米的春天 51CTO博客,原文链接:http://blog.51cto.com/lsxme/2054743,如需转载请自行联系原作者