您好,登錄后才能下訂單哦!
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了,就把它注釋掉,它的好處在于區分不同的虛擬主機
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
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。