PHP 配置文件 php.ini,它是最終并且是最直接影響 PHP 功能的配置文件。
每次 PHP 初始化都要讀取 php.ini 文件。換句話說,只要模塊版本執行 CGI 版本或與每個腳本執行 CGI 版本,httpd 都要重啟。
如果你的設置沒有顯示在 phpinfo()
中記得要停止并重新啟動 httpd。
如果它仍然無法顯示,使用 phpinfo () 檢查 php.ini 文件的路徑。
配置文件被很好的注釋和配置。鍵是區分大小寫的,關鍵字的值則不區分大小寫 ;
忽略空白處和分號開頭行。用 1/0
, Yes/No
, On/off
或 true/false
表示布爾值。
在 php.ini-Dist 文件中,默認值有助于 PHP 順利安裝,默認值可稍后調整。
在這里我們解釋下 php.ini 文件重要設置,它需要 PHP 解析器。
Short_open_tag = Off
短標記看起來像這樣: <? ?>。如果您想要使用 XML 功能,此選項必須設置關閉。
safe_mode = Off
如果此設置為開時,你可能編譯 PHP 為--enable-safe-mode標志。安全模式與 CGI 使用最相關。詳見這一章前一部分"CGI compile-time options"一節。
safe_mode_exec_dir = [DIR]
此選項只有在安全模式開啟時才會生效;它也可以在 UNIX 生成過程中與 --with-exec--dir 標志一起設置。在安全模式下 PHP 只是執行此目錄之外的外部二進制文件。默認值為 /usr/local/bin。這與提供正常的 PHP/HTML 網頁頁面無關。
safe_mode_allowed_envvars = [PHP]
在安全模式下,用戶設置此選項可以更改哪些環境變量,默認值是只為這些以"PHP_"前綴的變量。如果這項指令為空,則大多數變量都可變。
safe_mode_protected_env_vars = [LD_LIBRARY_PATH]
在安全模式下,用戶設置此選項可以更改哪些環境變量,即使允許更改設置safe_mode_allowed_env_vars
。
disable_functions = [function1, function2...]
出于安全考慮 PHP4 新增配置和 PHP5 標準配置中使用了禁用選定功能。以前,這需要 PHP 手動編輯成 C 代碼。文件系統、系統和網絡功能可能是第一選擇,因為通過 HTTP 寫入允許文件和更改系統永遠不是安全的。
max_execution_time = 30
此函數 set_time_limit() 不能在在安全模式下運行,所以這是安全模式下進行腳本超時的主要方式。
在 Windows 系統中,你必須中止消耗最大內存,而不是時間。
如果您使用 Apache,也可以使用 Apache timeout 設置超時,但這不適用站點上的非 PHP 文件。
error_reporting = E_ALL & ~E_NOTICE
除了提示外包含所有的錯誤默認值是 E_ALL & ~ E_notice。
開發服務器一定要最低限度設置成默認值;生產服務器可以考慮設置成較小的值。
error_prepend_string = [""]
在書擋中,error_append_string,此設置允許將錯誤消息標記為與其他的文本不同的顏色,或者你想要的顏色。
warn_plus_overloading = Off
如果在字符串中使用 + 運算符,作為表單中的值,這個設置會發出一條警告。
variables_order = EGPCS
此配置設置將取代 gpc_order。
現在都是隨著register_globals
被棄用。它設置不同變量的順序:Environment, GET, POST, COOKIE, and SERVER (aka Built-in)。
您或許可以更改此順序。變量從左到右依次覆蓋,而且,每次最右邊那個優先級最高。這意味著如果你剩下默認設置,正巧使用相同名稱的環境變量,POST 變量和 COOKIE 變量,這樣的話 COOKIE 變量將會擁有該名稱。其實,這不會經常發生的。
register_globals = Off
此設置允許您決定是否注冊 EGPCS 變量為全局變量。
現在處于關閉狀態,并且 PHP4.2,此標志默認設置是關閉的。現在都改用超全局變量數組。在這本書中所有列出的主要代碼都使用的超全局變量數組。
參考手冊
gpc_order = GPC
此設置 GPC 已棄用。
magic_quotes_gpc = On
此設置轉義引號傳入 GET/POST/COOKIE 數據。
如果你使用很多自動提交表單或其他形式提交并顯示窗體值,您可能需要設置此指令開或準備使用 addslashes() on string-type 數據。
magic_quotes_runtime = Off
此設置轉義來自傳入數據庫和文本字符串的引號。
當存儲字符串和當返回值沒有帶斜杠時,請記住 SQL 添加斜杠在單引號和撇號前面。如果此設置為關,你又要輸出 SQL 數據庫中的字符串數據時請使用 stripslashes()。如果 magic_quotes_sybase 設置為 On,此必須處于關閉狀態。
magic_quotes_sybase = Off
這個參數只在啟用magic_quotes_runtime
時才有意義。
如果啟用了magic_quotes_sybase
,所有來自外部資源的數據都將使用一個單引號而不是反斜線進行轉義。
如果數據來自 Sybase 數據庫,這就非常有用,因為 Sybase 數據庫的轉義字符不是反斜線,而是非傳統的單引號。
auto-prepend-file = [path/to/file]
如果指定路徑,每個 PHP 文件的開頭必須自動include()
。包含路徑設置適用。
auto-append-file = [path/to/file]
如果指定路徑,每個 PHP 文件的結尾必須自動 include()。
除非你通過使用 exit() 函數來避免。包含路徑設置適用。
include_path = [DIR]
如果設置此值,你只要允許包含或需要這些目錄中的文件即可。
這些目錄一般是你文檔的根目錄;
如果在安全模式下運行,設置這些為強制執行。
如此設置為包含您同一目錄腳本中的文件。多個目錄以冒號分隔:/usr/local/apache/htdocs:/usr/local/lib
。
doc_root = [DIR]
如果使用 Apache,你應該已經在 httpd.conf 虛擬主機和此服務器設置了根目錄。
如果你使用安全模式或如果要在你站點部分啟用 PHP,在此處設置此值(比如,僅在您網頁根目錄的一個子目錄中)。
file_uploads = [on/off]
如果使用 PHP 腳本上傳文件則打開此標志。
upload_tmp_dir = [DIR]
如果您明白 HTTP 上傳的具體影響,請注釋這條!
session.save-handler = files
除了在極少數情況下,請不要更改此設置。所以別管它。
ignore_user_abort = [On/Off]
設置客戶端斷開連接時是否中斷腳本的執行
PHP 以命令行腳本執行時,當腳本終端結束,腳本不會被立即中止,除非設置 value 為 TRUE,否則腳本輸出任意字符時會被中止。
此設置控制站點訪問者點擊關閉的原因。默認開啟就意味著腳本持續運行到完成或超時。如果設置更改為關閉,該腳本將中止。此設置僅適用模塊模式而不是 CGI 模式。
mysql.default_host = hostname
如果不指定任何其他主機時,服務器主機默認使用最初連接到的數據庫服務器的主機。
mysql.default_user = username
如果未指定主機名,默認使用最初連接的服務器名。
mysql.default_password = password
如果不指定設置密碼則默認使用最初連接到的服務器密碼。
allow_url_fopen
本選項激活了 URL 形式的 fopen 封裝協議使得可以訪問 URL 對象例如文件。
默認的封裝協議提供用 ftp 和 http 協議來訪問遠程文件,一些擴展庫例如 zlib 可能會注冊更多的封裝協議。
allow_url_include
本選項用于配置:是否可以使用include
require
include_once
require_once
進行遠程包含文件
date.timezone=Asia/Shanghai
在未設定環境變量時用于所有日期/時間函數的默認時區。
優先順序在 date_default_timezone_get() 頁面中有說明。
支持的時區可參見 所支持的時區列表。
display_errors
該選項設置是否將錯誤信息作為輸出的一部分顯示到屏幕,或者對用戶隱藏而不顯示。
error_reporting
設置錯誤報告的級別。該參數可以是一個任意的表示二進制位字段的整數,或者常數名稱。錯誤級別和常數是在 預定義常量定義的,在php.ini
之中也有專門的說明。在程序運行時,還可以通過 error_reporting() 函數進行設置。請查看 display_errors 了解詳情。
upload_max_filesize
改配置是設置:最大上傳文件大小
當使用 integer 時, 其值以字節來衡量。還可以使用在FAQ中描述的速記符。
max_file_uploads
允許同時上傳的最大文件數量。
post_max_size
設置允許的發布數據的最大大小。 該設置也會影響文件上傳。 要上傳大文件,該值必須大于upload_max_filesize。 如果配置腳本啟用了內存限制,memory_limit也會影響文件上傳。 一般來說,memory_limit應該大于post_max_size。 如果post數據的大小大于post_max_size,那么$ _POST和$ _FILES超全局變量就是空的。 這可以通過各種方式進行跟蹤,例如, 通過將$ _GET變量傳遞給處理數據的腳本,即<form action =“edit.php?processed = 1”>,然后檢查是否設置了$ _GET ['processed']。
比較重點的幾個參數:
-
register_globals
-
allow_url_fopen
-
allow_url_include
-
date.timezone
-
display_errors
-
error_reporting
-
safe_mode
-
upload_max_filesize
-
max_file_uploads
-
post_max_size