天天看點

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,如需轉載請自行聯系原作者