LAMP架構搭建與優化(2.8-2.9)

2.8 php.ini配置文件詳解

/usr/local/php/bin/php  -i |head可以查看到調用的php.ini配置文件在哪裏,它是以分號爲註釋符號,常用的配置有

vim  /usr/local/php/etc/php.ini

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官方文檔上查找。(爲了安全,禁止一些高風險的函數)

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才能正常。


同上也可以去配置Apache     vim  /usr/local/apache2/conf/extra/httpd-vhosts.conf

如果有多個站點就要去配置Apache,因爲php.ini只能寫寫一句,而Apache能配置多個open_basedir,每一個虛擬主機一個open_basedir。

加一句php_admin_value open_basedir "/data/www/:/tmp/",這樣就不需要php.ini裏面的open_basedir了,就把它註釋掉,它的好處在於區分不同的虛擬主機

wKioL1bJxWehhibXAADbmYB81Gc912.png




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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章