首先看php的配置文件,它在這個路徑下php
[root@zhangmengjunlinux ~]# vim /usr/local/php/etc/php.inimysql
若是你不知道他在哪裏的話,咱們也有辦法去查看linux
[root@zhangmengjunlinux ~]# /usr/local/php/bin/php -i |headsql
phpinfo()shell
PHP Version => 5.3.27apache
System => Linux zhangmengjunlinux.com 2.6.32-573.el6.i686 #1 SMP Thu Jul 23 12:37:35 UTC 2015 i686vim
Build Date => Dec 26 2015 22:16:02瀏覽器
Configure Command => './configure' '--prefix=/usr/local/php' '--with-apxs2=/usr/local/apache2/bin/apxs' '--with-config-file-path=/usr/local/php/etc' '--with-mysql=/usr/local/mysql' '--with-libxml-dir' '--with-gd' '--with-jpeg-dir' '--with-png-dir' '--with-freetype-dir' '--with-iconv-dir' '--with-zlib-dir' '--with-bz2' '--with-openssl' '--with-mcrypt' '--enable-soap' '--enable-gd-native-ttf' '--enable-mbstring' '--enable-sockets' '--enable-exif' '--disable-ipv6'安全
Server API => Command Line Interface服務器
Virtual Directory Support => disabled
Configuration File (php.ini) Path => /usr/local/php/etc
Loaded Configuration File => /usr/local/php/etc/php.ini
這個命令也就是phpinfo,能夠看到,所調用的php文件在哪裏
Loaded Configuration File => /usr/local/php/etc/php.ini
那咱們就去配置php,就是去更改它的配置文件
[root@zhangmengjunlinux ~]# vim /usr/local/php/etc/php.ini
這個php是以「;」做爲註釋符號的,shell是用 #號,那咱們經常使用的配置大概有這麼多,首先第一個
disable_functions =eval,assert,popen.passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcrnd,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
disable_functions它默認是空的,要禁用的一些函數,那咱們爲了安全須要去禁用一些高風險的函數,有哪些上面已經列出來了,能夠去看一下官方文檔看看有什麼含義
第二配置:關於它的錯誤日誌,相關的搜索關鍵子/display_error
display_error=off默認是off的,若是咱們把它改爲on,它能夠再頁面也就是瀏覽器訪問的頁面裏顯示一些錯誤信息,不妨舉個列子,假如把它改爲display_error=on
#apachectl graceful
而後咱們故意把php的腳本寫錯
這一行aaaaaaaa在php看來是不識別的,保存退出
咱們去瀏覽器刷新看一下,有一個錯誤提示,能夠根據看提示找出腳本哪裏出了問題
那咱們在把display_error=on改爲off在來刷新就成了一個白頁了,看不到任何的錯誤,那麼這個時候不知道哪裏錯了怎麼辦,第一個辦法打開display_error,固然你在不知道什麼狀況的狀況下看一看他的狀態碼按F12刷新出來錯誤500,還能夠curl測試一下,500通常都是PHP的腳本程序有問題,打開display_error=on以後意味着別人能看到你的錯誤信息,因此咱們想到了一種別的方法,首先把display_error=off,而後打開php的錯誤日誌,log_error=on,若是是off咱們改爲on,另外咱們去定義一下具體的error_log所在的路徑
error_log=/usr/local/php/logs/php_error_log
那咱們先來看一下路徑存在不存在
[root@zhangmengjunlinux ~]# ls /usr/local/php/logs/
ls: 沒法訪問/usr/local/php/logs/: 沒有那個文件或目錄
[root@zhangmengjunlinux ~]# mkdir /usr/local/php/logs/
[root@zhangmengjunlinux ~]# ls /usr/local/phpp/logs
ls: 沒法訪問/usr/local/phpp/logs: 沒有那個文件或目錄
[root@zhangmengjunlinux ~]# chmod 777 /usr/local/php/logs/
沒有那個目錄咱們建立一個,而後呢改它的權限爲777,由於錯誤日誌的用戶是apache的因此咱們要讓它能夠寫,到這裏尚未完咱們要去配置日誌的格式,第三日誌的級別
error_reporting = E_ALL & ~E_NOTICE
保存退出,重新加載apache
[root@zhangmengjunlinux ~]# ls /usr/local/php/logs/
[root@zhangmengjunlinux ~]# !vim
vim /usr/local/php/etc/php.ini
[root@zhangmengjunlinux ~]# apachectl restart
[root@zhangmengjunlinux ~]# vim /data/www/forum.php
[root@zhangmengjunlinux ~]# apachectl restart
[root@zhangmengjunlinux ~]# ls /usr/local/php/logs/
php_errors.log
[root@zhangmengjunlinux ~]# cat /usr/local/php/logs/php_errors.log
[02-Jan-2016 16:05:11 Asia/Chongqing] PHP Parse error: syntax error, unexpected T_STRING in /data/www/forum.php on line 11
那在瀏覽器頁面刷新,雖然咱們看不到任何信息,可是咱們會在/usr/local/php/logs/下產生了php_error.log有一個日誌產生,咱們cat一下,看到有錯誤信息,這就是如何去打開php的錯誤日誌,而且不暴露信息
在一個知識點、open_basedir也是一個安全選項,舉幾個列子,我們這個php apache要訪問網站,它們去找到一個路徑,咱們有定義一個路徑,好比/data/www,假如網站有一些漏洞,讓不法分子得到了一些權限,他能夠上傳***,***能夠得到服務器上的一些信息,好比說能夠得到一些目錄,文件,那麼這個時候咱們應該想到一個策略,爲了以防萬一,咱們應該把它的權限限制死在某一個目錄下,由於咱們的網站是在/data/www下。怎麼去作呢,就用這個選項
open_basedir=/data/www:/tmp,先來作一個錯誤的顯示open_basedir=/data/www2:/tmp
保存退出, apache重新加載一下,去瀏覽器刷新一下的時候又是個白頁,打開F12也是500,php能夠這麼作那麼apache針對虛擬主機去作一些限制,每個虛擬主機一open_basedir,每個站點,每個域名使用一個open_basedir怎麼作它的配置很簡單
#vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
php_admin_value open_basedir "/data/www/:/tmp/"
咱們能夠把php.ini裏的open_basedir給註釋掉了,咱們須要的是apache裏的,它的好處在於咱們能夠區分不一樣的虛擬主機