您的位置:首頁技術文章
文章詳情頁

詳細的php.ini 配置文件

瀏覽:8日期:2022-09-13 08:09:12

php5.2 的配置文件詳解,金步國的翻譯作品,比較有參考意義,需要的朋友收藏了。

;;;;;;;;;;;;;;;;;;; 關于php.ini ;;;;;;;;;;;;;;;;;;;; 這個文件必須命名為’php.ini’并放置在httpd.conf中PHPINIDir指令指定的目錄中。; 最新版本的php.ini可以在下面兩個位置查看:; http://cvs.php.net/viewvc.cgi/php-src/php.ini-recommended?view=co; http://cvs.php.net/viewvc.cgi/php-src/php.ini-dist?view=co

;;;;;;;;;;;;;; 語法 ;;;;;;;;;;;;;;; 該文件的語法非常簡單。空白字符和以分號開始的行被簡單地忽略。; 章節標題(例如: [php])也被簡單地忽略,即使將來它們可能有某種意義。;; 設置指令的格式如下:; directive = value; 指令名(directive)是大小寫敏感的!所以”foo=bar”不同于”FOO=bar”。; 值(value)可以是:; 1. 用引號界定的字符串(如:”foo”); 2. 一個數字(整數或浮點數,如:0, 1, 34, -1, 33.55); 3. 一個PHP常量(如:E_ALL, M_PI); 4. 一個INI常量(On, Off, none); 5. 一個表達式(如:E_ALL & ~E_NOTICE);; INI文件中的表達式僅使用:位運算符、邏輯非、圓括號:; | 位或; & 位與; ~ 位非; ! 邏輯非;; 布爾標志用 On 表示打開,用 Off 表示關閉。;; 一個空字符串可以用在等號后不寫任何東西表示,或者用 none 關鍵字:; foo = ; 將foo設為空字符串; foo = none ; 將foo設為空字符串; foo = “none” ; 將foo設為字符串’none’;; 如果你在指令值中使用動態擴展(PHP擴展或Zend擴展)中的常量,; 那么你只能在加載這些動態擴展的指令行之后使用這些常量。

;;;;;;;;;;;;;;;;;;;; httpd.conf ;;;;;;;;;;;;;;;;;;;;; 可以在httpd.conf中針對特定虛擬主機或目錄覆蓋php.ini的值,以進行更靈活的配置:; php_admin_value name value ;設置非bool型的指令,將value設為none則清除先前的設定; php_admin_flag name on|off ;僅用于設置bool型的指令; [提示]因為很多指令不允許使用php_value/php_flag進行設置,因此不建議使用這兩個。;; PHP常量(如E_ALL)僅能在php.ini中使用,在httpd.conf中必須使用相應的掩碼值。

;[2008-3-2日更新];==========================================================================================;;=====================================配置指令詳解========================================;==========================================================================================; 以下每個指令的設定值都與 PHP-5.2.5 內建的默認值相同。; 也就是說,如果’php.ini’不存在,或者你刪掉了某些行,默認值與之相同。

;;;;;;;;;;;;;;;; Apache ;;;;;;;;;;;;;;;;[Apache]; 僅在將PHP作為Apache模塊時才有效。

child_terminate = Off; PHP腳本在請求結束后是否允許使用apache_child_terminate()函數終止子進程。; 該指令僅在UNIX平臺上將PHP安裝為Apache1.3的模塊時可用。其他情況下皆不存在。

engine = On; 是否啟用PHP解析引擎。; 提示:可以在httpd.conf中基于目錄或者虛擬主機來打開或者關閉PHP解析引擎。

last_modified = Off; 是否在Last-Modified應答頭中放置該PHP腳本的最后修改時間。

xbithack = Off; 是否不管文件結尾是什么,都作為PHP可執行位組來解析。

;;;;;;;;;;;;;;;;; PHP核心 ;;;;;;;;;;;;;;;;;

[PHP-Core-DateTime]; 前四個配置選項目前僅用于date_sunrise()和date_sunset()函數。

date.default_latitude = 31.7667; 默認緯度

date.default_longitude = 35.2333; 默認經度

date.sunrise_zenith = 90.583333; 默認日出天頂

date.sunset_zenith = 90.583333; 默認日落天頂

date.timezone =; 未設定TZ環境變量時用于所有日期和時間函數的默認時區。; 中國大陸應當使用”PRC”; 應用時區的優先順序為:; 1. 用date_default_timezone_set()函數設定的時區(如果設定了的話); 2. TZ 環境變量(如果非空的話); 3. 該指令的值(如果設定了的話); 4. PHP自己推測(如果操作系統支持); 5. 如果以上都不成功,則使用 “UTC”

[PHP-Core-Assert]

assert.active = On; 是否啟用assert()斷言評估

assert.bail = Off; 是否在發生失敗斷言時中止腳本的執行

assert.callback =; 發生失敗斷言時執行的回調函數

assert.quiet_eval = Off; 是否使用安靜評估(不顯示任何錯誤信息,相當于error_reporting=0)。; 若關閉則在評估斷言表達式的時候使用當前的error_reporting指令值。

assert.warning = On; 是否對每個失敗斷言都發出警告

[PHP-Core-SafeMode]; 安全模式是為了解決共享服務器的安全問題而設立的。; 但試圖在PHP層解決這個問題在結構上是不合理的,; 正確的做法應當是修改web服務器層和操作系統層。; 因此在PHP6中廢除了安全模式,并使用基于open_basedir的安全防護。; 此部分指令在PHP6中已經全部被刪除。

safe_mode = Off; 是否啟用安全模式。; 打開時,PHP將檢查當前腳本的擁有者是否和被操作的文件的擁有者相同,; 相同則允許操作,不同則拒絕操作。

safe_mode_gid = Off; 在安全模式下,默認在訪問文件時會做UID比較檢查。; 但有些情況下嚴格的UID檢查反而是不適合的,寬松的GID檢查已經足夠。; 如果你想將其放寬到僅做GID比較,可以打開這個參數。

safe_mode_allowed_env_vars = “PHP_”; 在安全模式下,用戶僅可以更改的環境變量的前綴列表(逗號分隔)。; 允許用戶設置某些環境變量,可能會導致潛在的安全漏洞。; 注意: 如果這一參數值為空,PHP將允許用戶更改任意環境變量!

safe_mode_protected_env_vars = “LD_LIBRARY_PATH”; 在安全模式下,用戶不能更改的環境變量列表(逗號分隔)。; 這些變量即使在safe_mode_allowed_env_vars指令設置為允許的情況下也會得到保護。

safe_mode_exec_dir = “/usr/local/php/bin”; 在安全模式下,只有該目錄下的可執行程序才允許被執行系統程序的函數執行。; 這些函數是:system, escapeshellarg, escapeshellcmd, exec, passthru,; proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, shell_exec

safe_mode_include_dir =; 在安全模式下,該組目錄和其子目錄下的文件被包含時,將跳過UID/GID檢查。; 換句話說,如果此處的值為空,任何UID/GID不符合的文件都不允許被包含。; 這里設置的目錄必須已經存在于include_path指令中或者用完整路徑來包含。; 多個目錄之間用冒號(Win下為分號)隔開。; 指定的限制實際上是一個前綴,而非一個目錄名,; 也就是說”/dir/incl”將允許訪問”/dir/include”和”/dir/incls”; 如果您希望將訪問控制在一個指定的目錄,那么請在結尾加上斜線。

[PHP-Core-Safe]

allow_url_fopen = On; 是否允許打開遠程文件

allow_url_include = Off; 是否允許include/require遠程文件。

disable_classes =; 該指令接受一個用逗號分隔的類名列表,以禁用特定的類。

disable_functions =; 該指令接受一個用逗號分隔的函數名列表,以禁用特定的函數。

enable_dl = On; 是否允許使用dl()函數。dl()函數僅在將PHP作為apache模塊安裝時才有效。; 禁用dl()函數主要是出于安全考慮,因為它可以繞過open_basedir指令的限制。; 在安全模式下始終禁用dl()函數,而不管此處如何設置。; PHP6中刪除了該指令,相當于設為Off。

expose_php = On; 是否暴露PHP被安裝在服務器上的事實(在http頭中加上其簽名)。; 它不會有安全上的直接威脅,但它使得客戶端知道服務器上安裝了PHP。

open_basedir =; 將PHP允許操作的所有文件(包括文件自身)都限制在此組目錄列表下。; 當一個腳本試圖打開一個指定目錄樹之外的文件時,將遭到拒絕。; 所有的符號連接都會被解析,所以不可能通過符號連接來避開此限制。; 特殊值’.’指定了存放該腳本的目錄將被當做基準目錄,; 但這有些危險,因為腳本的工作目錄可以輕易被chdir()改變。; 對于共享服務器,在httpd.conf中針對不同的虛擬主機或目錄靈活設置該指令將變得非常有用。; 在Windows中用分號分隔目錄,UNIX系統中用冒號分隔目錄。; 作為Apache模塊時,父目錄中的open_basedir路徑將自動被繼承。; 指定的限制實際上是一個前綴,而非一個目錄名,; 也就是說”/dir/incl”將允許訪問”/dir/include”和”/dir/incls”,; 如果您希望將訪問控制在一個指定的目錄,那么請在結尾加上一個斜線。; 默認是允許打開所有文件。

sql.safe_mode = Off; 是否使用SQL安全模式。; 如果打開,指定默認值的數據庫連接函數將會使用這些默認值代替支持的參數。; 對于每個不同數據庫的連接函數,其默認值請參考相應的手冊頁面。

[PHP-Core-Error]

error_reporting = E_ALL & ~E_NOTICE; 錯誤報告級別是位字段的疊加,推薦使用 E_ALL | E_STRICT; 1 E_ERROR 致命的運行時錯誤; 2 E_WARNING 運行時警告(非致命性錯誤); 4 E_PARSE 編譯時解析錯誤; 8 E_NOTICE 運行時提醒(經常是bug,也可能是有意的); 16 E_CORE_ERRORPHP啟動時初始化過程中的致命錯誤; 32 E_CORE_WARNING PHP啟動時初始化過程中的警告(非致命性錯); 64 E_COMPILE_ERROR 編譯時致命性錯; 128 E_COMPILE_WARNING 編譯時警告(非致命性錯); 256 E_USER_ERROR用戶自定義的致命錯誤; 512 E_USER_WARNING 用戶自定義的警告(非致命性錯誤); 1024 E_USER_NOTICE 用戶自定義的提醒(經常是bug,也可能是有意的); 2048 E_STRICT 編碼標準化警告(建議如何修改以向前兼容); 4096 E_RECOVERABLE_ERROR 接近致命的運行時錯誤,若未被捕獲則視同E_ERROR; 6143 E_ALL 除E_STRICT外的所有錯誤(PHP6中為8191,即包含所有); 也可以用2147483647(所有二進制位全為1)打開現在或將來可能出現的各種錯誤

track_errors = Off; 是否在變量$php_errormsg中保存最近一個錯誤或警告消息。

display_errors = On; 是否將錯誤信息作為輸出的一部分顯示。; 在最終發布的web站點上,強烈建議你關掉這個特性,并使用錯誤日志代替(參看下面)。; 在最終發布的web站點打開這個特性可能暴露一些安全信息,; 例如你的web服務上的文件路徑、數據庫規劃或別的信息。

display_startup_errors = Off; 是否顯示PHP啟動時的錯誤。; 即使display_errors指令被打開,關閉此參數也將不顯示PHP啟動時的錯誤。; 建議你關掉這個特性,除非你必須要用于調試中。

report_memleaks = On; 是否報告內存泄漏。這個參數只在以調試方式編譯的PHP中起作用,; 并且必須在error_reporting指令中包含 E_WARNING

report_zend_debug = On; 尚無說明文檔

html_errors = On; 是否在出錯信息中使用HTML標記。; 注意: 不要在發布的站點上使用這個特性!

docref_root = ;”http://localhost/phpmanual/”docref_ext = ;”.html”; 如果打開了html_errors指令,PHP將會在出錯信息上顯示超連接,; 直接鏈接到一個說明這個錯誤或者導致這個錯誤的函數的頁面。; 你可以從http://www.php.net/docs.php下載php手冊,; 并將docref_root指令指向你本地的手冊所在的URL目錄。; 你還必須設置docref_ext指令來指定文件的擴展名(必須含有’.’)。; 注意: 不要在發布的站點上使用這個特性。

error_prepend_string = ;”<font color=#f00>”; 用于錯誤信息前輸出的字符串error_append_string = ;”</font>”; 用于錯誤信息后輸出的字符串

xmlrpc_errors = Offxmlrpc_error_number = 0; 尚無文檔

[PHP-Core-Logging]

define_syslog_variables = Off; 是否定義各種系統日志變量,如:$LOG_PID, $LOG_CRON 等等。; 關掉它以提高效率的好主意。; 你可以在運行時調用define_syslog_variables()函數來定義這些變量。

error_log =; 將錯誤日志記錄到哪個文件中。該文件必須對Web服務器用戶可寫。; syslog 表示記錄到系統日志中(NT下的事件日志, Unix下的syslog(3)); 如果此處未設置任何值,則錯誤將被記錄到Web服務器的錯誤日志中。

log_errors = Off; 是否在日志文件里記錄錯誤,具體在哪里記錄取決于error_log指令。; 強烈建議你在最終發布的web站點時使用日志記錄錯誤而不是直接輸出,; 這樣可以讓你既知道那里出了問題,又不會暴露敏感信息。

log_errors_max_len = 1024; 設置錯誤日志中附加的與錯誤信息相關聯的錯誤源的最大長度。; 這里設置的值對顯示的和記錄的錯誤以及$php_errormsg都有效。; 設為 0 可以允許無限長度。

ignore_repeated_errors = Off; 記錄錯誤日志時是否忽略重復的錯誤信息。; 錯誤信息必須出現在同一文件的同一行才被被視為重復。

ignore_repeated_source = Off; 是否在忽略重復的錯誤信息時忽略重復的錯誤源。

[PHP-Core-Mail]; 要使郵件函數可用,PHP必須在編譯時能夠訪問sendmail程序。; 如果使用其它的郵件程序,如qmail或postfix,確保使用了相應的sendmail包裝。; PHP首先會在系統的PATH環境變量中搜索sendmail,接著按以下順序搜索:; /usr/bin:/usr/sbin:/usr/etc:/etc:/usr/ucblib:/usr/lib; 強烈建議在PATH中能夠找到sendmail。; 另外,編譯PHP的用戶必須能夠訪問sendmail程序。

SMTP = “localhost”; mail()函數中用來發送郵件的SMTP服務器的主機名稱或者IP地址。僅用于win32。

smtp_port = 25; SMTP服務器的端口號。僅用于win32。

sendmail_from =; 發送郵件時使用的”From:”頭中的郵件地址。僅用于win32; 該選項還同時設置了”Return-Path:”頭。

sendmail_path = “-t -i”; 僅用于unix,也可支持參數(默認的是’sendmail -t -i’); sendmail程序的路徑,通常為”/usr/sbin/sendmail或/usr/lib/sendmail”。; configure腳本會嘗試找到該程序并設定為默認值,但是如果失敗的話,可以在這里設定。; 不使用sendmail的系統應將此指令設定為sendmail替代程序(如果有的話)。; 例如,Qmail用戶通常可以設為”/var/qmail/bin/sendmail”或”/var/qmail/bin/qmail-inject”。; qmail-inject 不需要任何選項就能正確處理郵件。

mail.force_extra_parameters =; 作為額外的參數傳遞給sendmail庫的強制指定的參數附加值。; 這些參數總是會替換掉mail()的第5個參數,即使在安全模式下也是如此。

[PHP-Core-ResourceLimit]

default_socket_timeout = 60; 默認socket超時(秒)

max_execution_time = 30; 每個腳本最大允許執行時間(秒),0 表示沒有限制。; 這個參數有助于阻止劣質腳本無休止的占用服務器資源。; 該指令僅影響腳本本身的運行時間,任何其它花費在腳本運行之外的時間,; 如用system()/sleep()函數的使用、數據庫查詢、文件上傳等,都不包括在內。; 在安全模式下,你不能用ini_set()在運行時改變這個設置。

memory_limit = 128M; 一個腳本所能夠申請到的最大內存字節數(可以使用K和M作為單位)。; 這有助于防止劣質腳本消耗完服務器上的所有內存。; 要能夠使用該指令必須在編譯時使用”–enable-memory-limit”配置選項。; 如果要取消內存限制,則必須將其設為 -1 。; 設置了該指令后,memory_get_usage()函數將變為可用。

max_input_time = -1; 每個腳本解析輸入數據(POST, GET, upload)的最大允許時間(秒)。; -1 表示不限制。

max_input_nesting_level = 64; 輸入變量的最大嵌套深度(尚無更多解釋文檔)

post_max_size = 8M; 允許的POST數據最大字節長度。此設定也影響到文件上傳。; 如果POST數據超出限制,那么$_POST和$_FILES將會為空。; 要上傳大文件,該值必須大于upload_max_filesize指令的值。; 如果啟用了內存限制,那么該值應當小于memory_limit指令的值。

realpath_cache_size = 16K; 指定PHP使用的realpath(規范化的絕對路徑名)緩沖區大小。; 在PHP打開大量文件的系統上應當增大該值以提高性能。

realpath_cache_ttl = 120; realpath緩沖區中信息的有效期(秒)。; 對文件很少變動的系統,可以增大該值以提高性能。

[PHP-Core-FileUpLoad]

file_uploads = On; 是否允許HTTP文件上傳。; 參見upload_max_filesize, upload_tmp_dir, post_max_size指令

upload_max_filesize = 2M; 允許上傳的文件的最大尺寸。

upload_tmp_dir =; 文件上傳時存放文件的臨時目錄(必須是PHP進程用戶可寫的目錄)。; 如果未指定則PHP使用系統默認的臨時目錄。

[PHP-Core-MagicQuotes]; PHP6刪除了下列指令,相當于全部為 Off

magic_quotes_gpc = Off; 是否對輸入的GET/POST/Cookie數據使用自動字符串轉義( ‘ ” NULL )。; 這里的設置將自動影響 $_GEST $_POST $_COOKIE 數組的值。; 若將本指令與magic_quotes_sybase指令同時打開,則僅將單引號(‘)轉義為(”),; 其它特殊字符將不被轉義,即( ” NULL )將保持原樣??!; 建議關閉此特性,并使用自定義的過濾函數。

magic_quotes_runtime = Off; 是否對運行時從外部資源產生的數據使用自動字符串轉義( ‘ ” NULL )。; 若打開本指令,則大多數函數從外部資源(數據庫,文本文件等)返回數據都將被轉義。; 例如:用SQL查詢得到的數據,用exec()函數得到的數據,等等; 若將本指令與magic_quotes_sybase指令同時打開,則僅將單引號(‘)轉義為(”),; 其它特殊字符將不被轉義,即( ” NULL )將保持原樣??!; 建議關閉此特性,并視具體情況使用自定義的過濾函數。

magic_quotes_sybase = Off; 是否采用Sybase形式的自動字符串轉義(用 ” 表示 ‘)

[PHP-Core-HighLight]

highlight.bg = “#FFFFFF”highlight.comment = “#FF8000″highlight.default = “#0000BB”highlight.html = “#000000″highlight.keyword = “#007700″highlight.string = “#DD0000″; 語法高亮模式的色彩(通常用于顯示 .phps 文件)。; 只要能被<font color=xxx>接受的東西就能正常工作。

[PHP-Core-Langue]

short_open_tag = On; 是否允許使用”<? ?>”短標識。否則必須使用”<?php ?>”長標識。; 除非你的php程序僅在受控環境下運行,且只供自己使用,否則請不要使用短標記。; 如果要和XML結合使用PHP,可以選擇關閉此選項以方便直接嵌入”<?xml … ?>”,; 不然你必須用PHP來輸出:<? echo ‘<?xml version=”1.0″‘; ?>; 本指令也會影響到縮寫形式”<?=”,它和”<? echo”等價,要使用它也必須打開短標記。

asp_tags = Off; 是否允許ASP風格的標記”<% %>”,這也會影響到縮寫形式”<%=”。; PHP6中將刪除此指令

arg_separator.output = “&”; PHP所產生的URL中用來分隔參數的分隔符。; 另外還可以用”&amp;”或”,”等等。

arg_separator.input = “&”; PHP解析URL中的變量時使用的分隔符列表。; 字符串中的每一個字符都會被當作分割符。; 另外還可以用”,&”等等。

allow_call_time_pass_reference = On; 是否強迫在函數調用時按引用傳遞參數(每次使用此特性都會收到一條警告)。; php反對這種做法,并在PHP6里刪除了該指令(相當于設為Off),因為它影響到了代碼的整潔。; 鼓勵的方法是在函數聲明里明確指定哪些參數按引用傳遞。; 我們鼓勵你關閉這一選項,以保證你的腳本在將來版本的語言里仍能正常工作。

auto_globals_jit = On; 是否僅在使用到$_SERVER和$_ENV變量時才創建(而不是在腳本一啟動時就自動創建)。; 如果并未在腳本中使用這兩個數組,打開該指令將會獲得性能上的提升。; 要想該指令生效,必須關閉register_globals和register_long_arrays指令。

auto_prepend_file =auto_append_file =; 指定在主文件之前/后自動解析的文件名。為空表示禁用該特性。; 該文件就像調用了include()函數被包含進來一樣,因此會使用include_path指令的值。; 注意:如果腳本通過exit()終止,那么自動后綴將不會發生。

variables_order = “EGPCS”; PHP注冊 Environment, GET, POST, Cookie, Server 變量的順序。; 分別用 E, G, P, C, S 表示,按從左到右注冊,新值覆蓋舊值。; 舉例說,設為”GP”將會導致用POST變量覆蓋同名的GET變量,; 并完全忽略 Environment, Cookie, Server 變量。; 推薦使用”GPC”或”GPCS”,并使用getenv()函數訪問環境變量。

register_globals = Off; 是否將 E, G, P, C, S 變量注冊為全局變量。; 打開該指令可能會導致嚴重的安全問題,除非你的腳本經過非常仔細的檢查。; 推薦使用預定義的超全局變量:$_ENV, $_GET, $_POST, $_COOKIE, $_SERVER; 該指令受variables_order指令的影響。; PHP6中已經刪除此指令。

register_argc_argv = On; 是否聲明$argv和$argc全局變量(包含用GET方法的信息)。; 建議不要使用這兩個變量,并關掉該指令以提高性能。

register_long_arrays = On; 是否啟用舊式的長式數組(HTTP_*_VARS)。; 鼓勵使用短式的預定義超全局數組,并關閉該特性以獲得更好的性能。; PHP6中已經刪除此指令。

always_populate_raw_post_data = Off; 是否總是生成$HTTP_RAW_POST_DATA變量(原始POST數據)。; 否則,此變量僅在遇到不能識別的MIME類型的數據時才產生。; 不過,訪問原始POST數據的更好方法是 php://input 。; $HTTP_RAW_POST_DATA對于enctype=”multipart/form-data”的表單數據不可用。

unserialize_callback_func =; 如果解序列化處理器需要實例化一個未定義的類,; 這里指定的回調函數將以該未定義類的名字作為參數被unserialize()調用,; 以免得到不完整的”__PHP_Incomplete_Class”對象。; 如果這里沒有指定函數,或指定的函數不包含(或實現)那個未定義的類,將會顯示警告信息。; 所以僅在確實需要實現這樣的回調函數時才設置該指令。; 若要禁止這個特性,只需置空即可。

y2k_compliance = On; 是否強制打開2000年適應(可能在非Y2K適應的瀏覽器中導致問題)。

zend.ze1_compatibility_mode = Off; 是否使用兼容Zend引擎I(PHP 4.x)的模式。PHP6中將刪除該指令(相當于Off)。; 這將影響對象的復制、構造(無屬性的對象會產生FALSE或0)、比較。; 兼容模式下,對象將按值傳遞,而不是默認的按引用傳遞。

precision = 14; 浮點型數據顯示的有效位數。

serialize_precision = 100; 將浮點型和雙精度型數據序列化存儲時的精度(有效位數)。; 默認值能夠確保浮點型數據被解序列化程序解碼時不會丟失數據。

[PHP-Core-OutputControl]; 輸出控制函數很有用,特別是在已經輸出了信息之后再發送HTTP頭的情況下。; 輸出控制函數不會作用于header()或setcookie()等函數發送的HTTP頭,; 而只會影響類似于echo()函數輸出的信息和嵌入在PHP代碼之間的信息。

implicit_flush = Off; 是否要求PHP輸出層在每個輸出塊之后自動刷新數據。; 這等效于在每個 print()、echo()、HTML塊 之后自動調用flush()函數。; 打開這個選項對程序執行的性能有嚴重的影響,通常只推薦在調試時使用。; 在CLI SAPI的執行模式下,該指令默認為 On 。

output_buffering = 0; 輸出緩沖區大小(字節)。建議值為4096~8192。; 輸出緩沖允許你甚至在輸出正文內容之后再發送HTTP頭(包括cookies)。; 其代價是輸出層減慢一點點速度。; 設置輸出緩沖可以減少寫入,有時還能減少網絡數據包的發送。; 這個參數的實際收益很大程度上取決于你使用的是什么Web服務器以及什么樣的腳本。

output_handler =; 將所有腳本的輸出重定向到一個輸出處理函數。; 比如,重定向到mb_output_handler()函數時,字符編碼將被透明地轉換為指定的編碼。; 一旦你在這里指定了輸出處理程序,輸出緩沖將被自動打開(output_buffering=4096)。; 注意0: 此處僅能使用PHP內置的函數,自定義函數應在腳本中使用ob_start()指定。; 注意1: 可移植腳本不能依賴該指令,而應使用ob_start()函數明確指定輸出處理函數。;使用這個指令可能會導致某些你不熟悉的腳本出錯。; 注意2: 你不能同時使用”mb_output_handler”和”ob_iconv_handler”兩個輸出處理函數。;你也不能同時使用”ob_gzhandler”輸出處理函數和zlib.output_compression指令。; 注意3: 如果使用zlib.output_handler指令開啟zlib輸出壓縮,該指令必須為空。

[PHP-Core-Directory]

include_path = “.:/path/to/php/pear”; 指定一組目錄用于require(), include(), fopen_with_path()函數尋找文件。; 格式和系統的PATH環境變量類似(UNIX下用冒號分隔,Windows下用分號分隔):; UNIX: “/path1:/path2″; Windows: “path1;path2″; 在包含路徑中使用’.’可以允許相對路徑,它代表當前目錄。

user_dir =; 告訴php在使用 /~username 打開腳本時到哪個目錄下去找,僅在非空時有效。; 也就是在用戶目錄之下使用PHP文件的基本目錄名,例如:”public_html”

extension_dir = “/path/to/php”; 存放擴展庫(模塊)的目錄,也就是PHP用來尋找動態擴展模塊的目錄。; Windows下默認為”C:/php5″

[PHP-Core-HTTP]

default_mimetype = “text/html”default_charset = ;”gb2312″; PHP默認會自動輸出”Content-Type: text/html” HTTP頭。; 如果將default_charset指令設為”gb2312″,; 那么將會自動輸出”Content-Type: text/html; charset=gb2312″。; PHP6反對使用default_charset指令,而推薦使用unicode.output_encoding指令。

[PHP-Core-Unicode]; PHP6基于ICU(International Components for Unicode)庫提供了全面的Unicode支持。; 編譯時需要使用–with-icu-dir=<dir>指定ICU頭文件和庫的安裝位置。; 除detect_unicode外,其他都是PHP6新增的指令。;; PHP6的信息目前還很缺乏,所以此部分內容可能不完整甚至有錯誤。

detect_unicode = On; 指示Zend引擎是否通過檢查腳本的BOM(字節順序標記)來檢測腳本是否包含多字節字符。; 建議關閉。PHP6已經取消了此指令而用unicode.script_encoding指令來代替其功能。

unicode.semantics = Off; 是否啟用Unicode支持。; 如果打開此指令,那么PHP將變成一個完全的Unicode環境,比如:; 所有字符串和從HTTP接受的變量都將變成Unicode,所有PHP標識符也都可以使用Unicode字符。; 而且,PHP內部將使用Unicode字符串并負責對外圍非Unicode字符進行自動轉換,; 比如:HTTP輸入輸出、流、文件系統操作等等,甚至連php.ini自身都將按照UTF-8編碼來解析。; 開啟這個指令后,你必須明確指定二進制字符串。PHP將不對二進制字符串的內容做任何假定,; 因此你的程序必須保證能夠恰當的處理二進制字符串。; 如果關閉這個指令,PHP的行為將和以前的行為完全相同:; 字符串不會變成Unicode,文件和二進制字符串也將向后兼容,php.ini也將按照”as-is”風格解析。; 不管是否打開此指令,所有的函數和操作符都透明的支持Unicode字符串。

unicode.fallback_encoding = UTF-8; 為其他所有unicode.*_encoding指令設置默認值。; 也就是說如果某個unicode.*_encoding指令未明確設置的話,將使用此處設置的值。

unicode.runtime_encoding =; 運行時編碼指定了PHP引擎內部轉換二進制字符串時使用的編碼。; 此處的設置對于I/O相關操作(比如:寫入標準輸出/讀取文件系統/解碼HTTP輸入變量)沒有影響。; PHP也允許你明確的對字符串進行轉換:; (binary)$str — 轉化為二進制字符串; (unicode)$str — 轉化為Unicode字符串; (string)$str — 如果unicode.semantics為On則轉化為Unicode字符串,否則轉化為二進制字符串; 例如,如果該指令的值為iso-8859-1并且$uni是一個Unicode字符串,那么; $str = (binary)$uni; 將等到一個使用iso-8859-1編碼的二進制字符串。; 在連接、比較、傳遞參數等操作之前PHP會將相關字符串隱含轉換為Unicode,然后再進行操作。; 比如在將二進制字符串與Unicode進行連接的時候,; PHP將會使用這里的設置將二進制字符串轉換為Unicode字符串,然后再進行操作。

unicode.output_encoding =; PHP輸出非二進制字符串使用的編碼。; 自動將’print’和’echo’之類的輸出內容轉換為此處設定的編碼(并不對二進制字符串進行轉換)。; 當向文件之類的外部資源寫入數據的時候,; 你必須依賴于流編碼特性或者使用Unicode擴展的函數手動的對數據進行編碼。; 在PHP6中反對使用先前的default_charset指令,而推薦使用該指令。; 先前的default_charset指令只是指定了Content-Type頭中的字符集,而并不對實際的輸出做任何轉換。; 而在PHP6中,default_charset指令僅在unicode.semantics為off的時候才有效。; 設置了該指令后將在Content-Type輸出頭的’charset’部分填上該指令的值,; 而不管default_charset指令如何設置。

unicode.http_input_encoding =; 通過HTTP獲取的變量(比如$_GET和_$POST)內容的編碼。; 直到2007年4月此功能尚在開發中….

unicode.filesystem_encoding =; 文件系統的目錄名和文件名的編碼。; 文件系統相關的函數(比如opendir())將使用這個編碼接受和返回文件名和目錄名。; 此處的設置必須與文件系統實際使用的編碼完全一致。

unicode.script_encoding =; PHP腳本自身的默認編碼。; 你可以使用任何ICU支持的編碼來寫PHP腳本。; 如果你想針對單獨的腳本文件設定其編碼,可以在該腳本的開頭使用; <?php declare(encoding = ‘Shift-JIS’); ?>; 來指定。注意:必須是第一行開頭,全面不要有任何字符(包括空白)。; 該方法只能影響其所在的腳本,不會影響任何被包含的其他腳本。

unicode.stream_encoding = UTF-8unicode.from_error_mode = 2unicode.from_error_subst_char = 3f; 尚無文檔

[PHP-Core-Misc]

auto_detect_line_endings = Off; 是否讓PHP自動偵測行結束符(EOL)。; 如果的你腳本必須處理Macintosh文件,; 或者你運行在Macintosh上,同時又要處理unix或win32文件,; 打開這個指令可以讓PHP自動偵測EOL,以便fgets()和file()函數可以正常工作。; 但同時也會導致在Unix系統下使用回車符(CR)作為項目分隔符的人遭遇不兼容行為。; 另外,在檢測第一行的EOL習慣時會有很小的性能損失。

browscap = ;”c:/windows/system32/inetsrv/browscap.ini”; 只有PWS和IIS需要這個設置; 你可以從http://www.garykeith.com/browsers/downloads.asp; 得到一個browscap.ini文件。

ignore_user_abort = Off; 是否即使在用戶中止請求后也堅持完成整個請求。; 在執行一個長請求的時候應當考慮打開該它,; 因為長請求可能會導致用戶中途中止或瀏覽器超時。

user_agent = ;”PHP”; 定義”User-Agent”字符串

;url_rewriter.tags = “a=href,area=href,frame=src,form=,fieldset=”; 雖然此指令屬于PHP核心部分,但是卻用于Session模塊的配置

;extension =; 在PHP啟動時加載動態擴展。例如:extension=mysqli.so; “=”之后只能使用模塊文件的名字,而不能含有路徑信息。; 路徑信息應當只由extension_dir指令提供。; 主意,在windows上,下列擴展已經內置:; bcmath ; calendar ; com_dotnet ; ctype ; session ; filter ; ftp ; hash; iconv ; json ; odbc ; pcre ; Reflection ; date ; libxml ; standard; tokenizer ; zlib ; SimpleXML ; dom ; SPL ; wddx ; xml ; xmlreader ; xmlwriter

[PHP-Core-CGI]; 這些指令只有在將PHP運行在CGI模式下的時候才有效

doc_root =; PHP的”CGI根目錄”。僅在非空時有效。; 在web服務器的主文檔目錄(比如”htdocs”)中放置可執行程序/腳本被認為是不安全的,; 比如因為配置錯誤而將腳本作為普通的html顯示。; 因此很多系統管理員都會在主文檔目錄之外專門設置一個只能通過CGI來訪問的目錄,; 該目錄中的內容只會被解析而不會原樣顯示出來。; 如果設置了該項,那么PHP就只會解釋doc_root目錄下的文件,; 并確保目錄外的腳本都不會被PHP解釋器執行(user_dir除外)。; 如果編譯PHP時沒有指定FORCE_REDIRECT,并且在非IIS服務器上以CGI方式運行,; 則必須設置此指令(參見手冊中的安全部分)。; 替代方案是使用的cgi.force_redirect指令。

cgi.discard_path = Off; 尚無文檔(PHP6新增指令)

cgi.fix_pathinfo = On; 是否為CGI提供真正的 PATH_INFO/PATH_TRANSLATED 支持(遵守cgi規范)。; 先前的行為是將PATH_TRANSLATED設為SCRIPT_FILENAME,而不管PATH_INFO是什么。; 打開此選項將使PHP修正其路徑以遵守CGI規范,否則仍將使用舊式的不合規范的行為。; 鼓勵你打開此指令,并修正腳本以使用 SCRIPT_FILENAME 代替 PATH_TRANSLATED 。; 有關PATH_INFO的更多信息請參見cgi規范。

cgi.force_redirect = On; 是否打開cgi強制重定向。強烈建議打開它以為CGI方式運行的php提供安全保護。; 你若自己關閉了它,請自己負責后果。; 注意:在IIS/OmniHTTPD/Xitami上則必須關閉它!

cgi.redirect_status_env =; 如果cgi.force_redirect=On,并且在Apache與Netscape之外的服務器下運行PHP,; 可能需要設定一個cgi重定向環境變量名,PHP將去尋找它來知道是否可以繼續執行下去。; 設置這個變量會導致安全漏洞,請務必在設置前搞清楚自己在做什么。

cgi.rfc2616_headers = 0; 指定PHP在發送HTTP響應代碼時使用何種報頭。; 0 表示發送一個”Status: “報頭,Apache和其它web服務器都支持。; 若設為1,則PHP使用RFC2616標準的頭。; 除非你知道自己在做什么,否則保持其默認值 0

cgi.nph = Off; 在CGI模式下是否強制對所有請求都發送”Status: 200″狀態碼。

cgi.check_shebang_line =On; CGI PHP是否檢查腳本頂部以 #! 開始的行。; 如果腳本想要既能夠單獨運行又能夠在PHP CGI模式下運行,那么這個起始行就是必須的。; 如果打開該指令,那么CGI模式的PHP將跳過這一行。

fastcgi.impersonate = Off; IIS中的FastCGI支持模仿客戶端安全令牌的能力。; 這使得IIS能夠定義運行時所基于的請求的安全上下文。; Apache中的mod_fastcgi不支持此特性(03/17/2002); 如果在IIS中運行則設為On,默認為Off。

fastcgi.logging = On; 是否記錄通過FastCGI進行的連接。

[PHP-Core-Weirdy]; 這些選項僅存在于文檔中,卻不存在于phpinfo()函數的輸出中

async_send = Off; 是否異步發送。

from = ;”john@doe.com”; 定義匿名ftp的密碼(一個email地址)

;;;;;;;;;;;;;;;;;;;; 近核心模塊 ;;;;;;;;;;;;;;;;;;;;

[Pcre];Perl兼容正則表達式模塊

pcre.backtrack_limit = 100000; PCRE的最大回溯(backtracking)步數。

pcre.recursion_limit = 100000; PCRE的最大遞歸(recursion)深度。; 如果你將該值設的非常高,將可能耗盡進程的??臻g,導致PHP崩潰。

[Session]; 除非使用session_register()或$_SESSION注冊了一個變量。; 否則不管是否使用了session_start(),都不會自動添加任何session記錄。; 包括resource變量或有循環引用的對象包含指向自身的引用的對象,不能保存在會話中。; register_globals指令會影響到會話變量的存儲和恢復。

session.save_handler = “files”; 存儲和檢索與會話關聯的數據的處理器名字。默認為文件(“files”)。; 如果想要使用自定義的處理器(如基于數據庫的處理器),可用”user”。; 設為”memcache”則可以使用memcache作為會話處理器(需要指定”–enable-memcache-session”編譯選項)。; 還有一個使用PostgreSQL的處理器:http://sourceforge.net/projects/phpform-ext/

session.save_path = “/tmp”; 傳遞給存儲處理器的參數。對于files處理器,此值是創建會話數據文件的路徑。; Windows下默認為臨時文件夾路徑。; 你可以使用”N;[MODE;]/path”這樣模式定義該路徑(N是一個整數)。; N表示使用N層深度的子目錄,而不是將所有數據文件都保存在一個目錄下。; [MODE;]可選,必須使用8進制數,默認”600″,表示文件的訪問權限。; 這是一個提高大量會話性能的好主意。; 注意0: “N;[MODE;]/path”兩邊的雙引號不能省略。; 注意1: [MODE;]并不會改寫進程的umask。; 注意2: php不會自動創建這些文件夾結構。請使用ext/session目錄下的mod_files.sh腳本創建。; 注意3: 如果該文件夾可以被不安全的用戶訪問(比如默認的”/tmp”),那么將會帶來安全漏洞。; 注意4: 當N>0時自動垃圾回收將會失效,具體參見下面有關垃圾搜集的部分。; [安全提示]建議針對每個不同的虛擬主機分別設置各自不同的目錄。;; 對于”memcache”處理器,需要定義一個逗號分隔的服務器URL用來存儲會話數據。; 比如:”tcp://host1:11211, tcp://host2:11211″; 每個URL都可以包含傳遞給那個服務器的參數,可用的參數與 Memcache::addServer() 方法相同。; 例如:”tcp://host1:11211?persistent=1&weight=1&timeout=1&retry_interval=15″

session.name = “PHPSESSID”;用在cookie里的會話ID標識名,只能包含字母和數字。

session.auto_start = Off; 在客戶訪問任何頁面時都自動初始化會話,默認禁止。; 因為類定義必須在會話啟動之前被載入,所以若打開這個選項,你就不能在會話中存放對象。

session.serialize_handler = “php”; 用來序列化/解序列化數據的處理器,php是標準序列化/解序列化處理器。; 另外還可以使用”php_binary”。當啟用了WDDX支持以后,將只能使用”wddx”。

session.gc_probability = 1session.gc_divisor = 100; 定義在每次初始化會話時,啟動垃圾回收程序的概率。; 這個收集概率計算公式如下:session.gc_probability/session.gc_divisor; 對會話頁面訪問越頻繁,概率就應當越小。建議值為1/1000~5000。

session.gc_maxlifetime = 1440; 超過此參數所指的秒數后,保存的數據將被視為’垃圾’并由垃圾回收程序清理。; 判斷標準是最后訪問數據的時間(對于FAT文件系統是最后刷新數據的時間)。; 如果多個腳本共享同一個session.save_path目錄但session.gc_maxlifetime不同,; 那么將以所有session.gc_maxlifetime指令中的最小值為準。; 如果使用多層子目錄來存儲數據文件,垃圾回收程序不會自動啟動。; 你必須使用一個你自己編寫的shell腳本、cron項或者其他辦法來執行垃圾搜集。; 比如,下面的腳本相當于設置了”session.gc_maxlifetime=1440″ (24分鐘):; cd /path/to/sessions; find -cmin +24 | xargs rm

session.referer_check =; 如果請求頭中的”Referer”字段不包含此處指定的字符串則會話ID將被視為無效。; 注意:如果請求頭中根本不存在”Referer”字段的話,會話ID將仍將被視為有效。; 默認為空,即不做檢查(全部視為有效)。

session.entropy_file = ;”/dev/urandom”; 附加的用于創建

標簽: PHP
相關文章:
国产综合久久一区二区三区