2.8 php.ini配置文件詳解php
/usr/local/php/bin/php -i |head能夠查看到調用的php.ini配置文件在哪裏,它是以分號爲註釋符號,經常使用的配置有shell
vim /usr/local/php/etc/php.iniapache
1.disable_functions=eval,assert,popen,passthru,escapshllarg,escapeshellcmd,passthru,exec,systern,chroot,scandir,chgrp,chown,escapeshellcmd,escapshllarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,pro_close這些函數有什麼用,能夠到php官方文檔上查找。(爲了安全,禁止一些高風險的函數)vim
2.錯誤日誌display_errors=On 會在瀏覽器頁面提示一些錯誤,默認是off瀏覽器
去編輯一下vim /data/www/forum.php 特地去增長几行,在到瀏覽器訪問www.test.com/forum.php就會看到提示的錯誤,能夠根據提示看到配置文件哪裏有問題;若是是off的話,再到瀏覽器訪問就是空白頁面,就不知道哪裏有錯誤時,能夠按F12查看到狀態碼,或者curl -x127.0.0.1:80 www.test.com/forum.php -I,500通常是php.ini腳本有問題;若是是On,別人會看到這些錯誤信息,對別人不友好,因此打開php的錯誤日誌log_errors=On,再去定義錯誤日誌的路徑error_log=/usr/local/php/logs/php_errors.log,若是沒有這個路徑/usr/local/php/logs,就去mkdir /usr/local/php/logs/,而且更改權限chmod 777 /usr/local/php/logs/,再去配置日誌的格式、日誌的級別error_reporting=E_ALL & ~E_NOTICE,&表示而且,~表示取反,重啓Apache,在到瀏覽器訪問www.test.com/forum.php是空白頁面,不過會在 /usr/local/php/logs/產生一個php_errors.log文件,能夠cat php_errors.log裏面的文件,能夠看到發生的錯誤,這樣就不會在瀏覽器上暴露信息。安全
3.open_basedir=/data/www:/tmp 也是一個安全選項,如它只能訪問/data/www目錄,其它目錄是訪問不了的,就把它限定死,能夠是多個,因此說open_basedir必定要定義好在你的網站程序所在的目錄,這樣訪問www.test.com/forum.php才能正常。curl
同上也能夠去配置Apache vim /usr/local/apache2/conf/extra/httpd-vhosts.confsocket
若是有多個站點就要去配置Apache,由於php.ini只能寫寫一句,而Apache能配置多個open_basedir,每個虛擬主機一個open_basedir。ide
加一句php_admin_value open_basedir "/data/www/:/tmp/",這樣就不須要php.ini裏面的open_basedir了,就把它註釋掉,它的好處在於區分不一樣的虛擬主機函數
2.9 php擴展模塊如何安裝
/usr/local/php/bin/php -m (查看所加載的模塊,有動態也有靜態),假如你安裝完php,你想要的模塊沒有加載進來,解決辦法:第一種方法是從新編譯,第二種方法是用動態方式加載進來
嘗試動態共享的模塊cd /usr/local/src/php-5.6.18/ext/,不少模塊的源碼在這個目錄下,假如沒有curl模塊,cd curl,用這個命令/usr/local/php/bin/phpize,它的目的是爲了生成configure可執行文件,ls 你會看到curl目錄下多出不少文件,就去編譯configure,./configure --with-php-config=/usr/local/php/bin/php-config這是固定的語法,若是有錯誤通常是少了什麼庫,make,make install會有這樣一個文件 Installing shared extensions: /usr/local/php/lib/extensions/no-debug-non-zts-2016-2-21/,ls /usr/local/php/lib/extensions/no-debug-non-zts-2016-2-21/下面會有一個curl.so文件。
/usr/local/php/bin/php -i|grep extension_dir查extension_dir在哪,extension是存放這些擴展模塊的,extension_dir能夠在/usr/local/php/etc/php.ini裏面定義,vim /usr/local/php/etc/php.ini找到extension,而後在最後加上extension=curl.so,若是寫故意寫錯是加載不進來的,就能夠去看它的錯誤日誌tail /usr/local/php/logs/php_errors.log
grep '^extension=' /usr/local/php/etc/php.ini能夠看到哪些是動態加載的,剩下的就是靜態
取消高亮:nohl