2011
Oct
23
php.ini 是php程式的設定檔,其中包含不少安全性設定,我們就一一來看分別代表什麼意思吧
圖片上傳必改
- file_uploads = on :
- [on] 代表允許上傳檔案
- upload_max_filesize = 2M :
- [2M] 代表允許上傳的檔案最大 size
- upload_tmp_dir = "" : 指定上傳檔案時的暫存資料夾,如果不指定的說,預設會存在 /tmp 裡
- max_file_uploads = 20 ; 指定一次可以上傳的最大檔案數。
- post_max_size = 8M ;
- [8M] 代表使用POST上傳的最大資料量。
- 如果你只改了 upload_max_filesize 到 8M, 而忘了改 post_max_size,在你上傳檔案時,檔案的內容會超過 post_max_size,接著就被伺服器給中斷掉了,所以要記得改!
錯誤記錄( error log)
php 內建就有記錄程式錯誤的功能,方便工程師 debug。
- error_reporting = E_ALL : 指定哪些錯誤類型須要php記錄
- E_ALL : 是指全部的 error 訊息都要記錄
- E_ERROR: 嚴重錯誤,會使得程式當掉的才記錄下來
- E_WARNING : warning 記錄下來
- E_PARSE : 編譯錯誤記錄下來
- E_NOTICE : 提醒工程師,可能會出錯的訊息
- error_reporting = E_ERROR & E_WARNING :只記錄這兩種錯誤
- error_reporting = E_ALL & ~E_NOTICE :除了 Notice以外的錯誤都記錄下來
- display_errors = On
- [On] : 在網頁顯示錯誤訊息,
如果打開這個功能,當程式發生錯誤時,user會立即在網頁上看到錯誤訊息,除了會讓user以為看到亂碼之外,還有安全性上的風險。
- [Off] : 不在網頁上顯示錯誤訊息,
- display_startup_errors
- [On] : php 起始錯誤會記錄下來,如module載入失敗等等訊息。
- [Off] : 建議關閉,預設也是關閉的
- log_errors = On
- [On] : 將錯誤訊息記錄在檔案裡。
- [Off] : 關閉記錄錯誤訊息在檔案的功能。
- log_errors_max_len = 1024 : log檔案的最大size
- error_log = "/logs/error_log" :指定log的檔案名稱
- ignore_repeated_errors : 同一個檔案,同一行,忽略重覆的錯誤訊息。
- ignore_repeated_source : 當同一個錯誤,是執行在不同的檔案時産生,忽略此錯誤訊息。
- report_memleaks = On : 記錄 memory leak (E_WARNING)
- track_errors :將誤錯訊息存在變數 $php_errormsg
Paths and Directories
- include_path :php自動載入的根目錄
Example
- //如果include_path="/home/php/lib/"
- require('zip.php');
- /*
- 會自動去搜尋 /home/php/lin/zip.php 並載入
- 如果有同檔名的檔案 zip.php存在,會以include_path的為主
- */
- extension_dir: php extension 載入的目錄
- enable_dl : 是否允許動態載入 php extension
Example
- dl('mbstring.so');
- open_basedir : php 允許可以讀取的目錄 , 使用 file_get_contents 這個 function 時,有時會有權限不足的訊息,可以修改這個設定打開權限。
date.timezone 時區設定
一般PHP設定檔中 php.ini ,預設的時間是用國際標準時間(UTC),而台灣時間是國際標準時間 +8 。
- 改成台北時間的話可以使用語法 :date.timezone = "Asia/Taipei"
另一種設定 timezone 的方式,可以在 PHP Script 中直接指定 timezone 。
date_default_timezone_set("Asia/Taipei");