明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  這兩個設(shè)置參數(shù)更有意思啦,按如上設(shè)置,那么我們一眼就能看到:我們的程序是否出錯了!因為他的功能是把出錯信息設(shè)置成顯眼的紅顏色了。

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