Saturday, September 11, 2010

[PHP] php.ini的基本設定 (這篇文章會持續更新)

php.ini是PHP的設定檔,裡面有非常多的設定項目,其中有一些項目是我們要去注意的...另外,php.ini如果有變更的話,請重新啟動Apache伺服器...

register_globals = Off
說明:這個項目預設是On,允許當變數名稱相同時,不管是get或post的變數,都抓的到,這樣會有安全上的問題,所以我們必須把這一項設成Off。

upload_max_filesize = 200M
說明 1:這個項目是在設定上傳單一檔案的大小上限,可依照需求去做設定。
說明2:假設 upload_max_filesize 設定 60M,而 post_max_size 設定 200M,代表我可以傳送三個單檔 60M 的檔案,但傳送一個 70M 的檔案就會失敗,或傳送四個單檔 60M 的檔案(總和超過 200M)也會失敗。

post_max_size = 200M
說明:這個項目是在設定使用POST方法傳遞資料(文字、檔案...)的大小上限,可依照需求去做設定。


memory_limit = 400M
說明:這個項目是在設定可使用系統記憶體上限,這一項必須比upload_max_filesize及post_max_size值大


max_execution_time = 300
說明:執行時間的上限(單位:秒)。


max_input_time = 300
說明:上傳時間的上限(單位:秒)。 

magic_quotes_gpc = On
說明:這個項目如果開啟是讓PHP在處理字串傳遞時,會自動將某些符號(例如:'或")加上跳脫字元,請注意,本項目如果關閉(Off),表單傳遞資料時,可能會有sql隱碼攻擊的危險。
用PHP函数解决SQL injection
補充:PHP 5.4.X 已正式移除Magic quotes,如果要用新版php,就需要勤勞一點,自己在程式碼做好隱碼攻擊的防禦工作。

extension = php_gd2.dll
extension = php_exif.dll
說明:如果要用PHP的繪圖函式庫,需要將這兩項前面的分號去掉。

file_uploads=On
說明:啟動檔案上傳功能,預設為開啟。


;upload_tmp_dir=
說明:暫存目錄設定,預設為系統暫存目錄,若需設定請將前置分號移除。

short_open_tag = Off
說明:是否開啟容許使用短標籤"<? ?>",新版本的PHP預設是off,所以養成好習慣使用"<?php ?>",短標籤就不要使用吧。

display_errors = On
說明:是否將錯誤訊息顯示出來,如果在開發階段,錯誤訊息可以提供參考,正式上線後應該改成Off。
承上,當錯誤訊息不顯示時,可以設定 log_errors = On,這是將錯誤訊息傳給錯誤紀錄(errors log),在設定錯誤紀錄的存放位置 error_log = filename,這樣的話,你將可以看到錯誤訊息,但網站參觀者看不到。


error_reporting = E_ALL & ~E_DEPRECATED  【php 5.3.3的預設,"提醒"也會提示】
error_reporting = E_ALL & ~E_NOTICE  【除了"提醒"外的訊息都提示出來,書本建議項目】
說明:錯誤提示設定,錯誤訊息包括:警告、錯誤訊息與提醒。

expose_php = Off
說明:本項為PHP的資安預防項目,設成off可避免在http洩漏php版本等相關訊息,例如:server: apache/1.3.33 (unix) php/5.0.3 mod_ssl/2.8.16
openssl/0.9.7c

關於session的連線時間設定
說明:
[PHP] 設定SESSION的連線時間

error_log = "C:\php5\errorlog\error.log"    //
5.2.17(PHP版本)
error_log = "C:\php5\errorlog\error.log"    //5.3.5(PHP版本)
說明:錯誤紀錄設定(如果需要 Debug)

session.save_path = "C:/Appserv/php5/temp"

說明:當出現【Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly.】的錯誤訊息時,代表session的temp資料夾設定不正確,改一下資料夾位置就會正常了。
注意:如果是 linux 或 mac 系統,要設定資料夾權限,讓 apache 可以寫入。


date.timezone = "Asia/Taipei"
說明:server端主機的時區設定。
注意:如果有用到 DateTime() 相關函式,會要求一定要設定時區,不然會報錯。

No comments:

Post a Comment