php路徑沒有加載圖1 :圖二禁用php.info的結果php
[root@chy ~]# /usr/local/php/bin/php -i (查看php的路徑) [root@chy 111.com]# vim index.php <?php phpinfo (); (在indix.php裏面增長phpinfo) 在網頁中能夠查看到php的路徑,可是有加載(如截圖1) 那若是沒有加載時就須要在源碼包中cp一個了,拷貝方式以下:[root@chy 111.com]# cd /usr/local/src/php-5.6.30/ (進入到源碼包中) [root@chy php-5.6.30]# cp php.ini-development /usr/local/php/etc/php.ini (cp到/etc下) [root@chy php-5.6.30]# /usr/local/apache2.4/bin/apachectl graceful (這時還須要刷新配置文件) [root@chy php-5.6.30]# vim /usr/local/php/etc/php.ini (在php的配置文件裏面作一些操做) 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須要禁用掉,由於若是不由用,php的一些信息就會在網頁中顯示出來) [root@chy php-5.6.30]# /usr/local/apache2.4/bin/apachectl graceful (加載一下配置文件) (圖二是網頁訪問php.info時被拒絕的結果) [root@chy php-5.6.30]# vim /usr/local/php/etc/php.ini date.timezone =Asia/Chongqing (若是不定義這個會出現報錯) ; http://php.net/display-errors display_errors = Of (這個顯示錯誤信息也是須要關閉的,若是不關閉報錯的信息會顯示在網頁的頁面上) error_log = /tmp/php_errors.log (定義錯誤日誌的路徑) error_reporting = E_ALL (記錄日誌的權限,生產環境用的是 E_ALL & ~E_NOTICE ) [root@chy php-5.6.30]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@chy php-5.6.30]# /usr/local/apache2.4/bin/apachectl graceful (檢查配置,並加載一下配置) [root@chy php-5.6.30]# curl -A "a" -x127.0.0.1:80 http://www.111.com/index.php (用curl檢測時發現沒有任何的顯示,這裏加-A是由於以前作了user_agent的配置) [root@chy php-5.6.30]# ls -l /tmp/php_errors.log -rw-r--r-- 1 daemon daemon 438 8月 4 08:09 /tmp/php_errors.log [root@chy php-5.6.30]# ps aux |grep httpd root 2448 0.0 0.7 245632 11668 ? Ss 05:05 0:02 /usr/local/apache2.4/bin/httpd -k start daemon 5108 0.0 0.5 534596 9132 ? Sl 08:11 0:00 /usr/local/apache2.4/bin/httpd -k start daemon 5109 0.0 0.5 534596 9132 ? Sl 08:11 0:00 /usr/local/apache2.4/bin/httpd -k start daemon 5110 0.0 0.5 534596 9132 ? Sl 08:11 0:00 /usr/local/apache2.4/bin/httpd -k start root 5199 0.0 0.0 112664 976 pts/0 S+ 08:13 0:00 grep --color=auto httpd (這裏須要注意的是若是發現更改了php配置文件後,也設置了錯誤日誌的路徑與權限仍是沒有記錄錯誤日誌,就須要看看錯誤日誌的目錄有沒有寫權限,這個權限是apache的屬主daemon)
錯誤日誌的小案例html
[root@chy php-5.6.30]# vim /data/wwwroot/111.com/2.php (寫一個2.php) [root@chy php-5.6.30]# curl -A "c" -x127.0.0.1:80 http://www.111.com/2.php -I HTTP/1.0 500 Internal Server Error Date: Fri, 04 Aug 2017 00:22:37 GMT Server: Apache/2.4.27 (Unix) PHP/5.6.30 X-Powered-By: PHP/5.6.30 Connection: close Content-Type: text/html; charset=UTF-8 (狀態碼爲500,爲500的緣由是2.php的語法故意寫錯了) [root@chy php-5.6.30]# !cat cat /tmp/php_errors.log [04-Aug-2017 08:07:05 Asia/chongqing] PHP Warning: phpinfo() has been disabled for security reasons in /data/wwwroot/111.com/index.php on line 2 [04-Aug-2017 08:07:09 Asia/chongqing] PHP Warning: phpinfo() has been disabled for security reasons in /data/wwwroot/111.com/index.php on line 2 [04-Aug-2017 08:09:56 Asia/chongqing] PHP Warning: phpinfo() has been disabled for security reasons in /data/wwwroot/111.com/index.php on line 2 [04-Aug-2017 08:22:37 Asia/chongqing] PHP Parse error: syntax error, unexpected end of file in /data/wwwroot/111.com/2.php on line 4 (查看錯誤日誌)
網站隔離(A,B網站互不影響,當一個網站被黑了,另外一個網站沒有影響)open_basedirshell
[root@chy php-5.6.30]# vim /usr/local/php/etc/php.ini open_basedir =/data/wwwroot/111.com/tmp/ (在php.ini下定義的是整個的網站並達不到須要的效果,若是須要實現每一個網站都隔離須要在apache的虛擬配置文件裏進行配置) [root@chy php-5.6.30]# vi /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName www.111.com ServerAlias www.exaple.com 222.com #<Directory /data/wwwroot/111.com> #<filesMatch 123.php> #AllowOverride AuthConfig #AuthName "111.com user auth" #AuthType Basic #AuthUserFile /data/.htpasswd #require valid-user #</FilesMatch> #</Directory> php_admin_value open_basedir "/data/wwwroot/111.com:/tmp/" (針對不一樣的虛擬主機設置open_basedir,php_admin_value open_basedir "/data/wwwroot/111.com:/tmp/"主要配置)