明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

透析PHP的設(shè)置文件php.ini

[摘要]今天,我們來(lái)侃侃PHP.INI文件中的一些有趣的內(nèi)容吧。   PHP.INI文件相信每位PHP愛(ài)好者都不會(huì)陌生,在PHP的上一個(gè)版本PHP3.0中它被命名為PHP3.INI。用NOTEPAD打開(kāi)它,文件通常在操作系統(tǒng)的Windows目錄下。大家都看到,PHP.INI文件里面有很多分號(hào)“”,和Win...
今天,我們來(lái)侃侃PHP.INI文件中的一些有趣的內(nèi)容吧。

  PHP.INI文件相信每位PHP愛(ài)好者都不會(huì)陌生,在PHP的上一個(gè)版本PHP3.0中它被命名為PHP3.INI。用NOTEPAD打開(kāi)它,文件通常在操作系統(tǒng)的Windows目錄下。大家都看到,PHP.INI文件里面有很多分號(hào)“”,和Windows系統(tǒng)一樣,這些分號(hào)用來(lái)表示注解,也就是說(shuō)為了配置文件清晰易懂,開(kāi)發(fā)者在分號(hào)后面對(duì)每個(gè)配置功能做了簡(jiǎn)短說(shuō)明,系統(tǒng)處理時(shí)會(huì)忽略這些注解行。當(dāng)然,另外一個(gè)好處是,當(dāng)PHP系統(tǒng)配置有變化的時(shí)候,我們可以對(duì)某些行加上或去掉注解就行了,簡(jiǎn)單又方  
便。

  auto_prepend_file string 可以指定一個(gè)文件自動(dòng)地在讀取所有php文件之前解析執(zhí)行,可以為PHP、ASP、HTML等任何文件(不過(guò)圖像文件可不行),在特殊時(shí)候倒是很有用。比如你想在每個(gè)PHP頁(yè)面上增加一段廣告,又假設(shè)你在開(kāi)發(fā)一個(gè)網(wǎng)站,想讓所有訪問(wèn)者在讀取任何PHP頁(yè)面之前進(jìn)行身份驗(yàn)證,你就可以把你的驗(yàn)證代碼作成單獨(dú)文件,然后在這里設(shè)置string為該文件名就行啦。細(xì)心的讀者要問(wèn)了:如果我只是某些文件需要這些功能,可怎么辦呀,開(kāi)動(dòng)腦筋吧,舉個(gè)例子:

  myprefix.php文件
  <?php
  if (strstr(strtoupper( PHP_SELF),"/PHPTEST/"))
  echo "我的廣告!<BR>";
  ?>

  這樣只要設(shè)置:auto_prepend_file=“myprefix.php”,那么所有phptest目錄下的PHP文件就都包含你的廣告頭啦!還需要說(shuō)明的是這個(gè)文件應(yīng)該放在include_path所指的路徑里面,不然可能會(huì)出錯(cuò)的,下面就會(huì)提到它。

  auto_append_file string 和上面功能類似,只是自動(dòng)加在PHP文件末尾,而且PHP程序用exit()退出時(shí)就不管用了。有了這個(gè)功能,我們可以易如反掌地添加公司地址的腳注了!

  include_path string 這個(gè)參數(shù)的作用是讓include()、require()等函數(shù)在這里所定義的路徑中查找文件,是不是有點(diǎn)象DOS時(shí)代里用的SET PATH命令?這個(gè)參數(shù)可以提供一個(gè)路徑列表,不過(guò)在UNIX中路徑間用冒號(hào)分隔,在NT中用分號(hào),而且斜杠的方向也不相同。如:
UNIX例:include_path=.:/home/lib
NT 例:include_path=".:c:homeib" 其中“.”表示當(dāng)前目錄。
gpc_order string

  GPC是GET/POST/COOKIE三種變量的第一個(gè)字母,它的順序體現(xiàn)系統(tǒng)處理三種變量的優(yōu)先級(jí)別,從左到右,優(yōu)先權(quán)依次遞增。默認(rèn)設(shè)置為GPC,這樣當(dāng)有其中任兩種或三種名稱相同變量傳遞到服務(wù)器時(shí),系統(tǒng)會(huì)按優(yōu)先權(quán)排序,只讀取優(yōu)先權(quán)較高的變量。又比如設(shè)定成 “GP” 表示忽視 cookie,并在存取方法 (method) 相同時(shí),以 POST 取代GET。當(dāng)然,我們?cè)诰幊踢^(guò)程中應(yīng)當(dāng)盡量避免同時(shí)用不同的方式傳遞名稱相同的變量,否則程序的可讀性會(huì)變壞,而且在配置不同的系統(tǒng)里可能會(huì)有不同的輸出結(jié)果。

  magic_quotes_gpc boolean 這個(gè)參數(shù)能確定包含在GET/POST/COOKIE這三種變量中的特殊字符:?jiǎn)我?hào)、雙引號(hào)、斜杠,是否加轉(zhuǎn)義字符反斜杠(就是C語(yǔ)言里常用的“”)?因?yàn)樵赑HP數(shù)據(jù)庫(kù)等系統(tǒng)中,單引號(hào)等字符通常有特殊意義,為了和真正的字符區(qū)分,我們可以設(shè)置magic_quotes_gpc=on,這樣如果我們從用戶端得到的變量中有單引號(hào)時(shí),會(huì)在前面加轉(zhuǎn)義符,然后我們可以根據(jù)需要用函數(shù)stripslashes(string str);(該函數(shù)可去掉字串中的反斜杠轉(zhuǎn)義符“”。若是連續(xù)二個(gè)反斜杠,則去掉一個(gè),留下一個(gè)。若只有一個(gè)反斜杠,就直接去掉。)來(lái)去掉轉(zhuǎn)義符“”,我們可以比較一下:

  <form>
  <input type="Text" value="" name="a">
  <input type="Submit">
  </form>
  <?php
  echo a;
  ?>

  讓我們分別在magic_quotes_gpc=on和off的情況下,在文本框中輸入單引號(hào)、雙引號(hào),然后提交,看看有什么區(qū)別?

  SMTP string 指定郵件發(fā)送服務(wù)器的域名或IP地址,這樣我們就可以發(fā)信啦,比起微軟的ASP來(lái),PHP的這個(gè)功能簡(jiǎn)單方便得多了,有人要問(wèn),如果我沒(méi)有配備郵件服務(wù)器怎么辦?很簡(jiǎn)單,只要填上當(dāng)?shù)豂SP的郵件服務(wù)器就行了。其實(shí)收發(fā)郵件服務(wù)器就像我們現(xiàn)實(shí)生活中的郵局一樣,在哪個(gè)郵局都能發(fā)信,而收信是在固定郵局。

  mysql.default_host string
  mysql.default_user string
  mysql.default_password string

  用過(guò)ODBC的讀者們都知道,設(shè)置ODBC的時(shí)候總需要設(shè)置數(shù)據(jù)庫(kù)所在及其默認(rèn)的登錄用戶名和口令,這幾個(gè)參數(shù)也是這個(gè)意思,不過(guò)是用在MYSQL里面罷了。為了安全起見(jiàn),我們還有必要在MYSQL里對(duì)該用戶的權(quán)力做一些限定,千萬(wàn)不要偷懶用“root“啊!如果為了方便而設(shè)置了這些參數(shù),那我們就能直接用函數(shù)mysql_connect()來(lái)連接數(shù)據(jù)庫(kù)了,注意這里可以不用任何參數(shù)!

  大家可能在想,雖然這樣很方便,同時(shí)也很危險(xiǎn)呀!別急,在PHP的安全模式里這些參數(shù)是無(wú)效的,下面我們來(lái)看看安全模式的設(shè)置吧。

  Safe mode boolean 這可不是WINDOWS 98的安全模式啊。當(dāng)PHP系統(tǒng)處于安全模式下時(shí),我們就能對(duì)PHP程序的行為進(jìn)行一定的控制,這時(shí)候一些數(shù)據(jù)庫(kù)比如MYSQL、INFOMIX等的默認(rèn)數(shù)據(jù)庫(kù)主機(jī)、用戶名、口令等設(shè)置無(wú)效,非法用戶就不能輕易連接數(shù)據(jù)庫(kù)了。而且在安全模式下safe_mode_allowed_env_vars string該項(xiàng)設(shè)置表示什么類型的系統(tǒng)環(huán)境變量可以被程序更改,若設(shè)置成safe_mode_allowed_env_vars=PHP_則表示只有PHP_打頭的系統(tǒng)環(huán)境變量可以被修改,例如這時(shí)如果在程序中企圖使用putenv("windir=UUU");來(lái)修改環(huán)境變量,系統(tǒng)就會(huì)提示一個(gè)安全模式的保護(hù)錯(cuò)誤。還有,安全模式對(duì)系統(tǒng)命令system()等有一定限制,如只能在指定目錄運(yùn)行等,這樣能對(duì)系統(tǒng)文件有一定的保護(hù)作用。

  log_errors boolean 這個(gè)參數(shù)指定PHP程序出錯(cuò)時(shí)是否要將錯(cuò)誤信息記錄在 LOG文檔中。在NT系統(tǒng)中如果我們同時(shí)設(shè)置error_log =syslog的話,我們就能在事件查看器的應(yīng)用程序日志里看到PHP所發(fā)生過(guò)的錯(cuò)誤信息,這對(duì)測(cè)試一個(gè)大型的系統(tǒng)有些幫助。
error_prepend_string = "<font color=ff0000>"
error_append_string = "</font>"

  這兩個(gè)設(shè)置參數(shù)更有意思啦,按如上設(shè)置,那么我們一眼就能看到:我們的程序是否出錯(cuò)了!因?yàn)樗墓δ苁前殉鲥e(cuò)信息設(shè)置成顯眼的紅顏色了。

  至于其它的很多選項(xiàng),有的一看便知,有興趣大家自己試試吧!