PHP 配置文件 php.ini宪迟,它是最終并且是最直接影響 PHP 功能的配置文件羔巢。
每次 PHP 初始化都要讀取 php.ini 文件悍抑。換句話說(shuō)檩小,只要模塊版本執(zhí)行 CGI 版本或與每個(gè)腳本執(zhí)行 CGI 版本开呐,httpd 都要重啟。
如果你的設(shè)置沒(méi)有顯示在 phpinfo()
中記得要停止并重新啟動(dòng) httpd规求。
如果它仍然無(wú)法顯示筐付,使用 phpinfo () 檢查 php.ini 文件的路徑。
配置文件被很好的注釋和配置阻肿。鍵是區(qū)分大小寫(xiě)的瓦戚,關(guān)鍵字的值則不區(qū)分大小寫(xiě) ;
忽略空白處和分號(hào)開(kāi)頭行丛塌。用 1/0
, Yes/No
, On/off
或 true/false
表示布爾值较解。
在 php.ini-Dist 文件中,默認(rèn)值有助于 PHP 順利安裝姨伤,默認(rèn)值可稍后調(diào)整哨坪。
在這里我們解釋下 php.ini 文件重要設(shè)置,它需要 PHP 解析器乍楚。
Short_open_tag = Off
短標(biāo)記看起來(lái)像這樣: <? ?>当编。如果您想要使用 XML 功能,此選項(xiàng)必須設(shè)置關(guān)閉。
safe_mode = Off
如果此設(shè)置為開(kāi)時(shí)徒溪,你可能編譯 PHP 為--enable-safe-mode標(biāo)志忿偷。安全模式與 CGI 使用最相關(guān)金顿。詳見(jiàn)這一章前一部分"CGI compile-time options"一節(jié)。
safe_mode_exec_dir = [DIR]
此選項(xiàng)只有在安全模式開(kāi)啟時(shí)才會(huì)生效鲤桥;它也可以在 UNIX 生成過(guò)程中與 --with-exec--dir 標(biāo)志一起設(shè)置揍拆。在安全模式下 PHP 只是執(zhí)行此目錄之外的外部二進(jìn)制文件。默認(rèn)值為 /usr/local/bin茶凳。這與提供正常的 PHP/HTML 網(wǎng)頁(yè)頁(yè)面無(wú)關(guān)嫂拴。
safe_mode_allowed_envvars = [PHP]
在安全模式下,用戶設(shè)置此選項(xiàng)可以更改哪些環(huán)境變量贮喧,默認(rèn)值是只為這些以"PHP_"前綴的變量筒狠。如果這項(xiàng)指令為空,則大多數(shù)變量都可變箱沦。
safe_mode_protected_env_vars = [LD_LIBRARY_PATH]
在安全模式下辩恼,用戶設(shè)置此選項(xiàng)可以更改哪些環(huán)境變量,即使允許更改設(shè)置safe_mode_allowed_env_vars
谓形。
disable_functions = [function1, function2...]
出于安全考慮 PHP4 新增配置和 PHP5 標(biāo)準(zhǔn)配置中使用了禁用選定功能灶伊。以前帜平,這需要 PHP 手動(dòng)編輯成 C 代碼靠瞎。文件系統(tǒng)栏笆、系統(tǒng)和網(wǎng)絡(luò)功能可能是第一選擇食零,因?yàn)橥ㄟ^(guò) HTTP 寫(xiě)入允許文件和更改系統(tǒng)永遠(yuǎn)不是安全的。
max_execution_time = 30
此函數(shù) set_time_limit() 不能在在安全模式下運(yùn)行啄巧,所以這是安全模式下進(jìn)行腳本超時(shí)的主要方式。
在 Windows 系統(tǒng)中,你必須中止消耗最大內(nèi)存康愤,而不是時(shí)間。
如果您使用 Apache舶吗,也可以使用 Apache timeout 設(shè)置超時(shí)征冷,但這不適用站點(diǎn)上的非 PHP 文件。
error_reporting = E_ALL & ~E_NOTICE
除了提示外包含所有的錯(cuò)誤默認(rèn)值是 E_ALL & ~ E_notice誓琼。
開(kāi)發(fā)服務(wù)器一定要最低限度設(shè)置成默認(rèn)值检激;生產(chǎn)服務(wù)器可以考慮設(shè)置成較小的值。
error_prepend_string = [""]
在書(shū)擋中腹侣,error_append_string叔收,此設(shè)置允許將錯(cuò)誤消息標(biāo)記為與其他的文本不同的顏色,或者你想要的顏色傲隶。
warn_plus_overloading = Off
如果在字符串中使用 + 運(yùn)算符,作為表單中的值饺律,這個(gè)設(shè)置會(huì)發(fā)出一條警告。
variables_order = EGPCS
此配置設(shè)置將取代 gpc_order跺株。
現(xiàn)在都是隨著register_globals
被棄用复濒。它設(shè)置不同變量的順序:Environment, GET, POST, COOKIE, and SERVER (aka Built-in)脖卖。
您或許可以更改此順序。變量從左到右依次覆蓋巧颈,而且畦木,每次最右邊那個(gè)優(yōu)先級(jí)最高。這意味著如果你剩下默認(rèn)設(shè)置砸泛,正巧使用相同名稱(chēng)的環(huán)境變量十籍,POST 變量和 COOKIE 變量,這樣的話 COOKIE 變量將會(huì)擁有該名稱(chēng)唇礁。其實(shí)妓雾,這不會(huì)經(jīng)常發(fā)生的。
register_globals = Off
此設(shè)置允許您決定是否注冊(cè) EGPCS 變量為全局變量垒迂。
現(xiàn)在處于關(guān)閉狀態(tài)械姻,并且 PHP4.2,此標(biāo)志默認(rèn)設(shè)置是關(guān)閉的』希現(xiàn)在都改用超全局變量數(shù)組楷拳。在這本書(shū)中所有列出的主要代碼都使用的超全局變量數(shù)組。
參考手冊(cè)
gpc_order = GPC
此設(shè)置 GPC 已棄用吏奸。
magic_quotes_gpc = On
此設(shè)置轉(zhuǎn)義引號(hào)傳入 GET/POST/COOKIE 數(shù)據(jù)欢揖。
如果你使用很多自動(dòng)提交表單或其他形式提交并顯示窗體值,您可能需要設(shè)置此指令開(kāi)或準(zhǔn)備使用 addslashes() on string-type 數(shù)據(jù)奋蔚。
magic_quotes_runtime = Off
此設(shè)置轉(zhuǎn)義來(lái)自傳入數(shù)據(jù)庫(kù)和文本字符串的引號(hào)她混。
當(dāng)存儲(chǔ)字符串和當(dāng)返回值沒(méi)有帶斜杠時(shí),請(qǐng)記住 SQL 添加斜杠在單引號(hào)和撇號(hào)前面泊碑。如果此設(shè)置為關(guān)坤按,你又要輸出 SQL 數(shù)據(jù)庫(kù)中的字符串?dāng)?shù)據(jù)時(shí)請(qǐng)使用 stripslashes()。如果 magic_quotes_sybase 設(shè)置為 On馒过,此必須處于關(guān)閉狀態(tài)臭脓。
magic_quotes_sybase = Off
這個(gè)參數(shù)只在啟用magic_quotes_runtime
時(shí)才有意義。
如果啟用了magic_quotes_sybase
腹忽,所有來(lái)自外部資源的數(shù)據(jù)都將使用一個(gè)單引號(hào)而不是反斜線進(jìn)行轉(zhuǎn)義来累。
如果數(shù)據(jù)來(lái)自 Sybase 數(shù)據(jù)庫(kù),這就非常有用窘奏,因?yàn)?Sybase 數(shù)據(jù)庫(kù)的轉(zhuǎn)義字符不是反斜線嘹锁,而是非傳統(tǒng)的單引號(hào)。
auto-prepend-file = [path/to/file]
如果指定路徑着裹,每個(gè) PHP 文件的開(kāi)頭必須自動(dòng)include()
领猾。包含路徑設(shè)置適用。
auto-append-file = [path/to/file]
如果指定路徑,每個(gè) PHP 文件的結(jié)尾必須自動(dòng) include()瘤运。
除非你通過(guò)使用 exit() 函數(shù)來(lái)避免窍霞。包含路徑設(shè)置適用。
include_path = [DIR]
如果設(shè)置此值拯坟,你只要允許包含或需要這些目錄中的文件即可但金。
這些目錄一般是你文檔的根目錄;
如果在安全模式下運(yùn)行郁季,設(shè)置這些為強(qiáng)制執(zhí)行冷溃。
如此設(shè)置為包含您同一目錄腳本中的文件。多個(gè)目錄以冒號(hào)分隔:/usr/local/apache/htdocs:/usr/local/lib
梦裂。
doc_root = [DIR]
如果使用 Apache似枕,你應(yīng)該已經(jīng)在 httpd.conf 虛擬主機(jī)和此服務(wù)器設(shè)置了根目錄。
如果你使用安全模式或如果要在你站點(diǎn)部分啟用 PHP年柠,在此處設(shè)置此值(比如凿歼,僅在您網(wǎng)頁(yè)根目錄的一個(gè)子目錄中)。
file_uploads = [on/off]
如果使用 PHP 腳本上傳文件則打開(kāi)此標(biāo)志冗恨。
upload_tmp_dir = [DIR]
如果您明白 HTTP 上傳的具體影響答憔,請(qǐng)注釋這條!
session.save-handler = files
除了在極少數(shù)情況下掀抹,請(qǐng)不要更改此設(shè)置虐拓。所以別管它。
ignore_user_abort = [On/Off]
設(shè)置客戶端斷開(kāi)連接時(shí)是否中斷腳本的執(zhí)行
PHP 以命令行腳本執(zhí)行時(shí)傲武,當(dāng)腳本終端結(jié)束蓉驹,腳本不會(huì)被立即中止,除非設(shè)置 value 為 TRUE揪利,否則腳本輸出任意字符時(shí)會(huì)被中止态兴。
此設(shè)置控制站點(diǎn)訪問(wèn)者點(diǎn)擊關(guān)閉的原因。默認(rèn)開(kāi)啟就意味著腳本持續(xù)運(yùn)行到完成或超時(shí)土童。如果設(shè)置更改為關(guān)閉诗茎,該腳本將中止工坊。此設(shè)置僅適用模塊模式而不是 CGI 模式献汗。
mysql.default_host = hostname
如果不指定任何其他主機(jī)時(shí),服務(wù)器主機(jī)默認(rèn)使用最初連接到的數(shù)據(jù)庫(kù)服務(wù)器的主機(jī)王污。
mysql.default_user = username
如果未指定主機(jī)名罢吃,默認(rèn)使用最初連接的服務(wù)器名。
mysql.default_password = password
如果不指定設(shè)置密碼則默認(rèn)使用最初連接到的服務(wù)器密碼昭齐。
allow_url_fopen
本選項(xiàng)激活了 URL 形式的 fopen 封裝協(xié)議使得可以訪問(wèn) URL 對(duì)象例如文件尿招。
默認(rèn)的封裝協(xié)議提供用 ftp 和 http 協(xié)議來(lái)訪問(wèn)遠(yuǎn)程文件,一些擴(kuò)展庫(kù)例如 zlib 可能會(huì)注冊(cè)更多的封裝協(xié)議。
allow_url_include
本選項(xiàng)用于配置:是否可以使用include
require
include_once
require_once
進(jìn)行遠(yuǎn)程包含文件
date.timezone=Asia/Shanghai
在未設(shè)定環(huán)境變量時(shí)用于所有日期/時(shí)間函數(shù)的默認(rèn)時(shí)區(qū)就谜。
優(yōu)先順序在 date_default_timezone_get() 頁(yè)面中有說(shuō)明怪蔑。
支持的時(shí)區(qū)可參見(jiàn) 所支持的時(shí)區(qū)列表。
display_errors
該選項(xiàng)設(shè)置是否將錯(cuò)誤信息作為輸出的一部分顯示到屏幕丧荐,或者對(duì)用戶隱藏而不顯示缆瓣。
error_reporting
設(shè)置錯(cuò)誤報(bào)告的級(jí)別。該參數(shù)可以是一個(gè)任意的表示二進(jìn)制位字段的整數(shù)虹统,或者常數(shù)名稱(chēng)弓坞。錯(cuò)誤級(jí)別和常數(shù)是在 預(yù)定義常量定義的,在php.ini
之中也有專(zhuān)門(mén)的說(shuō)明车荔。在程序運(yùn)行時(shí)渡冻,還可以通過(guò) error_reporting() 函數(shù)進(jìn)行設(shè)置。請(qǐng)查看 display_errors 了解詳情忧便。
upload_max_filesize
改配置是設(shè)置:最大上傳文件大小
當(dāng)使用 integer 時(shí), 其值以字節(jié)來(lái)衡量族吻。還可以使用在FAQ中描述的速記符。
max_file_uploads
允許同時(shí)上傳的最大文件數(shù)量珠增。
post_max_size
設(shè)置允許的發(fā)布數(shù)據(jù)的最大大小呼奢。 該設(shè)置也會(huì)影響文件上傳。 要上傳大文件切平,該值必須大于upload_max_filesize握础。 如果配置腳本啟用了內(nèi)存限制,memory_limit也會(huì)影響文件上傳悴品。 一般來(lái)說(shuō)禀综,memory_limit應(yīng)該大于post_max_size。 如果post數(shù)據(jù)的大小大于post_max_size苔严,那么$ _POST和$ _FILES超全局變量就是空的定枷。 這可以通過(guò)各種方式進(jìn)行跟蹤,例如届氢, 通過(guò)將$ _GET變量傳遞給處理數(shù)據(jù)的腳本欠窒,即<form action =“edit.php?processed = 1”>退子,然后檢查是否設(shè)置了$ _GET ['processed']岖妄。
比較重點(diǎn)的幾個(gè)參數(shù):
-
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