• PHP
  • 開發環境介紹
  • Windows環境建置
  • import_contacts php.ini常用的參數設置
    317
適用範圍

針對php的安全性或常用的設定做簡單的介紹

實用性:
重要性:

php.ini設定檔在何處?

要修改PHP設置我們會需要找到設定檔叫php.ini,正常下都會在C:\Program Files\IIS Express\PHP\版本\php.ini

在php的網頁上使用 echo phpinfo(); 的語法也能將您的php設置參數列出來查看。

常用的PHP設置參考

在php.ini裡,若最前面有「;」符號,則表示為註解,要將其拿掉,該行設定才會有作用,若仍無作用,請將iis的服務重啟試看看。

上傳大型檔案或大量檔案

upload_max_filesize = 4M 單一檔案上傳上限
post_max_size = 8M POST最大上限
memory_limit = 16M 記憶體上限
max_execution_time = 30 執行時間上限(秒)
max_input_time = 60 輸入資料時間上限(秒)
default_socket_timeout= 600 等待逾時(秒)
upload_tmp_dir = "" 上傳的暫存資料夾,不指定則預設存在 /tmp 裡

info 設定值依照自己的需求來做調整
原則必需為 memory_limit > post_max_size > upload_max_filesize
上傳檔案也較花費較長的時間,為了避免檔案上傳到一半,程式就被系統停止造成傳輸失敗,所以建議要再調整 max_execution_time 及 max_input_time。

禁用遠程URL的文件處理

allow_url_fopen = Off
allow_url_include = Off
這樣的設定來以防Remote File Inclusion (RFI)攻擊

限制文件系統讀/寫

open_basedir = "c:\inetpub\"

限制只能存取指定的目錄,可以同時設定多個目錄 (在Windows請使用「;」來分隔,在其它系統中則使用「:」)。

禁用Register_Globals

register_globals = Off

info 當設為On的時候,所有的POST、GET、SESSION、COOKIE 值都可以當作全域變數直接使用,為了防止程式使用的變數被注入程式碼,需要排除來自 HTML 表單的請求變數。 所以必需要設成Off,以防止程式變數和客戶端傳送的變數混雜在一起的情況。

輸出暫存

output_buffering = Off

一般伺服器的設定為off,建議也將自已的配置設成off,若在seesion_start之前有任何的輸出動作 (如echo),會輸出header error之類的錯誤。可以避免掉一些不必要的問題。

時差

date.timezone = "Asia/Taipei"

要解決8小時的時差,建議直接將此時區的配置設成亞洲/台北。或也可以在php程式碼裡設定,如下。

date_default_timezone_set("Asia/Taipei");

配置錯誤記錄

display_errors = Off 在網頁顯示錯誤訊息,在正式主機建設為 Off
display_startup_errors = Off 記錄起始錯誤,如module載入時
log_errors = On 將錯誤記在log檔裡
error_log = "C:\個人路徑"
error_reporting = E_ALL 指定哪些錯誤類型須要記錄,如下表。

項目 說明
E_ALL 全部的訊息都要記錄
E_ERROR 嚴重錯誤,造成程式無法執行
E_WARNING 錯誤,旦程式可以繼續往下執行,例如某些舊的函式語法,版本較新的已經停用不支援。
E_PARSE 編譯錯誤
E_NOTICE 提醒,例如變數不存在旦卻對其取值,比如說 echo $a,旦之前並未設定過 $a 的值為何。
E_ERROR & E_WARNING 用&符號可以複選需要記錄的錯誤,例如 E_ERROR 和 E_WARNING
E_ALL & ~E_NOTICE 記錄Notice以外的記錄 (即全部都記錄下來,旦不包含Notice)
補充說明/ NOTE

一般很常遇到的情況是你寫好的php程式在你的主機環境上執行沒有遇到錯誤,放到別人的主機就會出現一些問題無法正常執行,這通常都是上述一些設定造成的差異,因此建議您在配置的時候,要以較嚴謹的方式來配置,才能有良好的寫作習慣與用法,也能減少資安的風險。