優(yōu)化php性能的時候,優(yōu)化配置文件這個是首當(dāng)其沖的。下邊跟大家分享下我總結(jié)的關(guān)于php.ini配置文件里的每一行的解釋,希望能幫助大家進(jìn)一步了解php。
[root@taokey ~]# grep -v ";" /application/php/lib/php.ini
[PHP]
engine = On ——→ 是否啟用PHP解析引擎
short_open_tag = Off ——→ 是否使用簡介標(biāo)志
asp_tags = Off ——→ 不允許asp類標(biāo)志
precision = 14 ——→ 浮點(diǎn)型數(shù)據(jù)顯示的有效期
y2k_compliance = On
####是否強(qiáng)制打開2000年適應(yīng)(可能在非Y2K適應(yīng)的瀏覽器中導(dǎo)致問題)。
output_buffering = 4096 ——→ 輸出緩沖區(qū)大小(字節(jié))。建議值為4096~8192。
zlib.output_compression = Off ——→ 是否開啟zlib輸出壓縮
implicit_flush = Off ——→ 是否要求PHP輸出層在每個輸出塊之后自動刷新數(shù)據(jù)
這等效于在每個 print()、echo()、HTML塊 之后自動調(diào)用flush()函數(shù)。打開這個選項對程序執(zhí)行的性能有嚴(yán)重的影響,通常只推薦在調(diào)試時使用。在CLI SAPI的執(zhí)行模式下,該指令默認(rèn)為 On 。
unserialize_callback_func =
serialize_precision = 17
####將浮點(diǎn)型和雙精度型數(shù)據(jù)序列化存儲時的精度(有效位數(shù))。默認(rèn)值能夠確保浮點(diǎn)型數(shù)據(jù)被解序列化程序解碼時不會丟失數(shù)據(jù)。
allow_call_time_pass_reference = Off
####是否強(qiáng)迫在函數(shù)調(diào)用時按引用傳遞參數(shù)(每次使用此特性都會收到一條警告)。
; php反對這種做法,并在將來的版本里不再支持,因為它影響到了代碼的整潔。
; 鼓勵的方法是在函數(shù)聲明里明確指定哪些參數(shù)按引用傳遞。
; 我們鼓勵你關(guān)閉這一選項,以保證你的腳本在將來版本的語言里仍能正常工作。
safe_mode = Off ——→ 安全模式
safe_mode_gid = Off
safe_mode_include_dir =
#在安全模式下,該組目錄和其子目錄下的文件被包含時,將跳過UID/GID檢查。換句話說,如果此處的值為空,任何UID/GID不符合的文件都不允許被包含。這里設(shè)置的目錄必須已經(jīng)存在于include_path指令中或者用完整路徑來包含。多個目錄之間用冒號(Win下為分號)隔開。指定的限制實(shí)際上是一個前綴,而非一個目錄名。
safe_mode_exec_dir = ——→ 安全模式下的可執(zhí)行文件存放目錄
safe_mode_allowed_env_vars = PHP_
####在安全模式下,用戶僅可以更改的環(huán)境變量的前綴列表(逗號分隔)。允許用戶設(shè)置某些環(huán)境變量,可能會導(dǎo)致潛在的安全漏洞。注意: 如果這一參數(shù)值為空,PHP將允許用戶更改任意環(huán)境變量。
safe_mode_protected_env_vars = LD_LIBRARY_PATH
####在安全模式下,用戶不能更改的環(huán)境變量列表(逗號分隔)。這些變量即使在safe_mode_allowed_env_vars指令設(shè)置為允許的情況下也會得到保護(hù)。
disable_functions = ——→ 該指令接受一個用逗號分隔的函數(shù)名列表,以禁用特定的函數(shù)。
disable_classes = ——→ 該指令接受一個用逗號分隔的類名列表,以禁用特定的類
zend.enable_gc = On ——→
expose_php = On ——→ 在網(wǎng)頁頭部顯示php信息
max_execution_time = 30 ——→ 每個腳本最大執(zhí)行秒數(shù)
max_input_time = 60 ——→ 每個腳本用來分析請求數(shù)據(jù)的最大限制時間
memory_limit = 128M ——→ 每個腳本執(zhí)行的內(nèi)存限制
error_reporting = E_ALL & ~E_DEPRECATED
display_errors = Off ——→ #顯示失誤(該關(guān)閉,換成日志顯示)
display_startup_errors = Off ——→ #顯示啟動失誤
log_errors = On ——→ 生成錯誤錯誤日志顯示
log_errors_max_len = 1024 ——→ 設(shè)定error_log最大長度
ignore_repeated_errors = Off ——→ 打開后,不記錄重復(fù)的信息
ignore_repeated_source = Off ——→ 打開后當(dāng)記錄重復(fù)的信息時忽略來源
report_memleaks = On ——→ 報告內(nèi)存泄露,僅在debug編譯模式下有效
track_errors = Off ——→ ####在$php_errormsg中保存最后一次錯誤/警告消息 (邏輯值).永遠(yuǎn)不要再生產(chǎn)環(huán)境中使用此特性:html_errors 會顯示php錯誤所在的html標(biāo)簽
html_errors = Off ——→ 是否開啟靜態(tài)網(wǎng)頁錯誤提示
variables_order = "GPCS"——→ ####此指令描述了PHP注冊GET, POST, Cookie, 環(huán)境 和 內(nèi)置變量的順序 (各自使用G, P, C, E 和 S , 一般使用 EGPCS 或 GPC). 注冊使用從左往右的順序, 新的值會覆蓋舊的值.
request_order = "GP"
####此指令描述的順序PHP注冊GET,POST和COOKIE變量_REQUEST數(shù)組。注冊是由左到右,新的值將覆蓋舊值。如果這個指令沒有設(shè)置,variables_order中使用$ _REQUEST內(nèi)容。請注意,默認(rèn)分配的php.ini文件中不包含'C'餅干,出于安全方面的考慮。
register_globals = Off ——→ ##是否打開register全局變量
register_long_arrays = Off
####是否注冊老形式的輸入數(shù)組, HTTP_GET_VARS 和相關(guān)數(shù)組;如果你不使用他們,建議為了提高性能關(guān)閉他們.
register_argc_argv = Off
####此指令讓PHP確認(rèn)是否申明 argv&argc 變量 (這些變量會包含GET信息). ;如果你不使用這些變量,為了提升性能應(yīng)該關(guān)閉此選項.
auto_globals_jit = On
####當(dāng)打開此項, SERVER 和 ENV 變量將在第一次被使用時而不是腳本一開始時創(chuàng)建(運(yùn)行時);如果這些變量在腳本中沒有被使用過, 打開此項會增加一點(diǎn)性能.;為了使此指令有效,PHP指令 register_globals, register_long_arrays,;以及 register_argc_argv 必須被關(guān)閉.
post_max_size = 8M ——→ #PHP可以接受的最大的POST數(shù)據(jù)大小
magic_quotes_gpc = Off ——→ #針對GET/POST/Cookie數(shù)據(jù)打開Magic quotes.
magic_quotes_runtime = Off
####針對實(shí)時產(chǎn)生的數(shù)據(jù)打開Magic quotes,例如從SQL獲取的數(shù)據(jù), 從exec()返回的數(shù)據(jù)等等.
magic_quotes_sybase = Off ##使用 Sybase 風(fēng)格的 magic quotes (使用"來引導(dǎo)'替代\').
auto_prepend_file = ——→ #在任何PHP文檔之前或之后自動增加文件
auto_append_file =
####兩個有趣的變量是auto_prepend_file以及auto_append_file。這些變量指定PHP自動添加到任何PHP文檔文件頭或文件尾的其他文件。這對于為PHP產(chǎn)生的頁面添加頁眉或頁腳非常有用,可以節(jié)省為每個PHP文檔添加代碼的時間。但需要注意這里的指定文件將會添加到所有的PHP文檔中,所以這些變量必須適合單應(yīng)用程序(single-application)的服務(wù)器。所包含的文件要么是PHP腳本,要么是普通的HTML文檔。嵌入式PHP代碼必須用標(biāo)準(zhǔn)<?php...?>標(biāo)記括起來。
default_mimetype = "text/html"——→ #PHP內(nèi)建默認(rèn)為text/html
doc_root = ——→ #PHP的"根目錄"。僅在非空時有效。
; 如果safe_mode=On,則此目錄之外的文件一概被拒絕。 ; 如果編譯PHP時沒有指定FORCE_REDIRECT,并且在非IIS服務(wù)器上以CGI方式運(yùn)行, ; 則必須設(shè)置此指令(參見手冊中的安全部分)。 ; 替代方案是使用的cgi.force_redirect指令
user_dir =
####告訴php在使用 /~username 打開腳本時到哪個目錄下去找,僅在非空時有效。 也就是在用戶目錄之下使用PHP文件的基本目錄名,例如:"public_html"
enable_dl = Off
####是否允許使用dl()函數(shù)。dl()函數(shù)僅在將PHP作為apache模塊安裝時才有效。 禁用dl()函數(shù)主要是出于安全考慮,因為它可以繞過open_basedir指令的限制。 在安全模式下始終禁用dl()函數(shù),而不管此處如何設(shè)置。
file_uploads = On 是否開啟上傳功能
upload_max_filesize = 2M #最大可上傳文件,2M
max_file_uploads = 20 最大同時可以上傳20個文件
allow_url_fopen = On #是否允許打開遠(yuǎn)程文件
allow_url_include = Off #是否允許include/require遠(yuǎn)程文件
default_socket_timeout = 60 默認(rèn)的socket超時時間
[Date] 日期
[filter]
[iconv]
[intl]
[sqlite]
[sqlite3]
[Pcre]
[Pdo]
[Pdo_mysql]
pdo_mysql.cache_size = 2000 ——→ Ped_mysql的緩存大小
pdo_mysql.default_socket= ——→ 默認(rèn)的socket時間
[Phar]
[Syslog]
define_syslog_variables = Off ——→ 是否定義各種的系統(tǒng)日志變量
[mail function] ——→ 郵件功能
SMTP = localhost ——→ 本地作為郵件服務(wù)器
smtp_port = 25 郵件端口號默認(rèn)是25
mail.add_x_header = On ——→ 是否開啟最大的header
[SQL]
sql.safe_mode = Off
####是否使用SQL安全模式。如果打開,指定默認(rèn)值的數(shù)據(jù)庫連接函數(shù)將會使用這些默認(rèn)值代替支持的參數(shù)。對于每個不同數(shù)據(jù)庫的連接函數(shù),其默認(rèn)值請參考相應(yīng)的手冊頁面。
[ODBC]
odbc.allow_persistent = On ——→ 允許或阻止持久連接.
odbc.check_persistent = On ——→ 在重用前檢查連接是否可用
odbc.max_persistent = -1 ——→ 持久連接的最大數(shù)目,-1意味著沒有限制.
odbc.max_links = -1 ——→ 最大連接數(shù)(持久 + 非持久).-1意味著沒有限制.
odbc.defaultlrl = 4096 ——→ 長字段處理.返回變量的字節(jié)數(shù).0 意味著略過.
odbc.defaultbinmode = 1
####二進(jìn)制數(shù)據(jù)處理.0意味著略過,1按照實(shí)際返回,2轉(zhuǎn)換到字符.;查看odbc_binmode和odbc_longreadlen 的文檔來獲取針對uodbc.defaultlrl和uodbc.defaultbinmode的解釋
[Interbase] ——→ Interbase數(shù)據(jù)庫
ibase.allow_persistent = 1 ——→ 允許或組織持久連接。
ibase.max_persistent = -1 ——→ 持久連接的最大數(shù)目,-1意味著沒有限制.
ibase.max_links = -1 ——→ 最大連接數(shù)(持久 + 非持久).-1意味著沒有限制.
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"——→ 數(shù)據(jù)庫時間記錄模式
ibase.dateformat = "%Y-%m-%d"
ibase.timeformat = "%H:%M:%S"
[MySQL]
mysql.allow_local_infile = On ——→ 是否允許本地文件連接數(shù)據(jù)庫
mysql.allow_persistent = On ——→ 允許或禁止 持久連接
mysql.cache_size = 2000 ——→ mysql緩存大小
mysql.max_persistent = -1 ——→ 持久連接的最大數(shù)目. -1 意味著沒有限制.
mysql.max_links = -1 ——→ 連接的最大數(shù)目(持久和非持久)。-1 代表無限制
mysql.default_port =
####mysql_connect() 使用的默認(rèn)端口,如不設(shè)置,mysql_connect()
;將使用變量 $MYSQL_TCP_PORT,或在/etc/services下的mysql-tcp 條目(unix),
;或在編譯是定義的 MYSQL_PORT(按這樣的順序)
;Win32環(huán)境,將僅檢查MYSQL_PORT。
mysql.default_socket =
####用于本地 MySql 連接的默認(rèn)的套接字名。為空,使用 MYSQL 內(nèi)建值
mysql.default_host = ——→ mysql_connect() 默認(rèn)使用的主機(jī)(安全模式下無效)
mysql.default_user = ——→ mysql_connect() 默認(rèn)使用的用戶名(安全模式下無效)
mysql.default_password = ——→ mysql_connect() 默認(rèn)使用的密碼(安全模式下無效
mysql.connect_timeout = 60 ——→ 連接超時時間,默認(rèn)是60s
mysql.trace_mode = Off
[MySQLi]
mysqli.max_persistent = -1 ——→ 持久連接的最大數(shù)目. -1 意味著沒有限制.
mysqli.allow_persistent = On ——→ 允許或拒絕之久連接
mysqli.max_links = -1 ——→ 最大連接數(shù). -1 意味著沒有限制.
mysqli.cache_size = 2000 ——→ 連接緩存大小
mysqli.default_port = 3306 ——→ 連接端口號
####mysqli_connect()默認(rèn)的端口號.如果沒有設(shè)置, mysql_connect() 會使用 $MYSQL_TCP_PORT;或者 位于/etc/services的 mysql-tcp 入口或者編譯時定義的MYSQL_PORT 值(按照此順序查找).;Win32 只會查找MYSQL_PORT值.
mysqli.default_socket =
####對于本地MySQL連接的默認(rèn)socket名稱. 如果為空, 則使用MySQL內(nèi)建默認(rèn)值.
mysqli.default_host =
####mysqli_connect()的默認(rèn)host值(在安全模式中不會生效)
mysqli.default_user =
####mysqli_connect()的默認(rèn)user值(在安全模式中不會生效).
mysqli.default_pw =
####mysqli_connect() 的默認(rèn)password值(在安全模式中不會生效).
; 注意在此文件中保存密碼一般來說是 *糟糕* 的主義.
; *任何* 使用PHP的用戶可以執(zhí)行 'echoget_cfg_var("mysqli.default_password")
; 并且獲取到此密碼! 而且理所當(dāng)然, 任何有對此文件讀權(quán)限的用戶都可以獲取到此密碼.
mysqli.reconnect = Off ——→ 允許或阻止持久連接
[mysqlnd]
mysqlnd.collect_statistics = On
mysqlnd.collect_memory_statistics = Off
[OCI8]
[PostgreSQL]
pgsql.allow_persistent = On ——→ 允許或阻止持久連接.
pgsql.auto_reset_persistent = Off
####總是在 pg_pconnect() 時檢測斷開的持久連接.;自動重置特性會引起一點(diǎn)開銷.
pgsql.max_persistent = -1 ——→ 持久連接的最大數(shù)目. -1 意味著沒有限制.
pgsql.max_links = -1 ——→ 最大連接數(shù) (持久 + 非持久). -1 意味著沒有限制
pgsql.ignore_notice = 0 ——→ 是否忽略 PostgreSQL 后端通告消息.;通告消息記錄會需要一點(diǎn)開銷.
pgsql.log_notice = 0
####是否記錄 PostgreSQL 后端通告消息.;除非 pgsql.ignore_notice=0, 否則模塊無法記錄通告消息。
[Sybase-CT]
sybct.allow_persistent = On ——→ 允許或阻止持久連接.
sybct.max_persistent = -1 ——→ 持久連接的最大數(shù)目. -1 意味著沒有限制.
sybct.max_links = -1 ——→ 最大連接數(shù) (持久 + 非持久). -1 意味著沒有限制.
sybct.min_server_severity = 10 ——→ 顯示出的錯誤最小嚴(yán)重程度.
sybct.min_client_severity = 10 ——→ 顯示出的消息最小嚴(yán)重程度
[bcmath]
bcmath.scale = 0 ——→ #用于所有bcmath函數(shù)的10十進(jìn)制數(shù)數(shù)字的個數(shù)
[browscap]
[Session]
session.save_handler = files ——→ 用于保存/取回數(shù)據(jù)的控制方式
session.use_cookies = 1 ——→ 是否使用cookies
session.use_only_cookies = 1
####這個選項允許管理員去保護(hù)那些在URL中傳送session id的用戶免于被攻擊;默認(rèn)是0.
session.name = PHPSESSID ——→ session 的名字(同時作為cookie的名稱
session.auto_start = 0 ——→ 在請求開始時初始化 session
session.cookie_lifetime = 0 ——→ cookie的存活秒數(shù),如果為0,則是直到瀏覽器重新啟動
session.cookie_path = / ——→ cookie的有效路徑
session.cookie_domain = ——→ cookie的有效域名
session.cookie_httponly =
####是否將httpOnly標(biāo)志增加到cookie上,
增加后則cookie無法被瀏覽器的腳本語言(例如JavaScript)存取.
session.serialize_handler = php 用于序列化數(shù)據(jù)的處理器. php是標(biāo)準(zhǔn)的PHP序列化器.
session.gc_probability = 1
####; 定義'垃圾回收'進(jìn)程在每次session初始化時開始的比例.
; 比例由 gc_probability/gc_divisor來得出,
; 例如. 1/100意味著在每次請求時有1%的機(jī)會啟動'垃圾回收'進(jìn)程.
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
####在這里數(shù)字所指的秒數(shù)后,保存的數(shù)據(jù)將被視為'碎片(garbage)'并由gc進(jìn)程清理掉。
session.bug_compat_42 = Off
####PHP 4.2 和更早版本有一個未公開的 特性/bug , 此特性允許你在全局初始化一個session變量,即便 register_globals已經(jīng)被關(guān)閉.;如果此特性被使用,PHP 4.3 和更早版本會警告你.;你可以關(guān)閉此特性并且隔離此警告. 這時候,如果打開bug_compat_42,那此警告只是被顯示出來.
session.bug_compat_warn = Off
session.referer_check =
####檢查HTTP Referer來防止帶有id的外部URL.;HTTP_REFERER 必須包含從session來的這個字段才會被認(rèn)為是合法的.
session.entropy_length = 0 ——→ 從此文件讀取多少字節(jié)
session.cache_limiter = nocache
####設(shè)置為{nocache,private,public,}來決定HTTP緩沖的類型;留空則防止發(fā)送anti-caching頭.
session.cache_expire = 180 ——→ 文檔在n分鐘之后過期.
session.use_trans_sid = 0
####trans sid 支持默認(rèn)關(guān)閉.
;使用 trans sid 可能讓你的用戶承擔(dān)安全風(fēng)險.;使用此項必須小心.; - 用戶也許通過email/irc/其他途徑發(fā)送包含有效的session ID的URL給其他人.; - 包含有效session ID的URL可能被存放在容易被公共存取的電腦上.; - 用戶可能通過在瀏覽器歷史記錄或者收藏夾里面的包含相同的session ID的URL來訪問你的站點(diǎn).
session.hash_function = 0 ——→ 選擇hash方法;0:MD5(128 bits);1:SHA-1(160 bits)
session.hash_bits_per_character = 5
; 當(dāng)轉(zhuǎn)換二進(jìn)制hash數(shù)據(jù)到可讀形式時,每個字符保存時有幾位.
; 4 bits: 0-9, a-f; 5 bits: 0-9, a-v; 6 bits: 0-9, a-z, A-Z, "-", ","
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
URL rewriter會在已經(jīng)定義的一組HTML標(biāo)簽內(nèi)查找URL.; form/fieldset是特殊字符; 如果你在這里包含他們, rewriter會增加一個包含信息的隱藏<input>字段否則就是在URL中附加信息.; 如果你你想遵守XHTML, 刪除form的入口.; 注意 所有合法的入口都需要一個"="符號, 甚至是沒有任何值的.
[MSSQL]
mssql.allow_persistent = On ——→ 允許或阻止持久連接
mssql.max_persistent = -1 ——→ 持久連接的最大數(shù)目. -1 意味著沒有限制.
mssql.max_links = -1 ——→ 最大連接數(shù) (持久 + 非持久). -1 意味著沒有限制.
mssql.min_error_severity = 10 ——→ 顯示出的錯誤最小嚴(yán)重程度.
mssql.min_message_severity = 10 ——→ 顯示出的消息最小嚴(yán)重程度
mssql.compatability_mode = Off ——→ PHP 3.0 老版本的兼容模式.
mssql.secure_connection = Off ——→ 當(dāng)連接到服務(wù)器時使用NT驗證
[Assertion]
[COM]
[mbstring]
[gd]
[exif]
[Tidy]
當(dāng)調(diào)用tidy時,默認(rèn)指向tidy配置文件的路徑 tidy是否自動清除和修復(fù)輸出?; 警告: 不要在你產(chǎn)生非html內(nèi)容時使用此項,例如產(chǎn)生動態(tài)圖片時
tidy.clean_output = Off 清除功能是否開啟,本文中為關(guān)閉狀態(tài)
[soap]
soap.wsdl_cache_enabled=1 ——→ 打開或關(guān)閉WSDL緩沖特性.
soap.wsdl_cache_dir="/tmp"——→ 設(shè)置SOAP擴(kuò)展存放緩沖文件的目錄
soap.wsdl_cache_ttl=86400——→(存活時間)設(shè)置當(dāng)緩沖文件被用來替換原有緩沖文件的秒數(shù)
soap.wsdl_cache_limit = 5 ——→ 最小緩存
[sysvshm]
[ldap]
ldap.max_links = -1
[mcrypt]
[dba]
[xsl]

8ea6b87a660ec1fbb52697bebe014ecb.jpg