PHP.INI配置文件漫遊

 

一般來說你不需要改變PHP設置,它根據默認的配置通常就能很好的工作。但作爲PHP設計者的開發人員們考慮到用戶可能偶爾需要針對特定應用程序對 PHP語言的一些功能進行調整。因此,他們將一些PHP變量通過名爲php.ini的配置文件顯示出來。此配置文件允許用戶調整PHP多項功能,包括設置 文件路徑以及目錄、改變會話以及數據庫參數,以及激活擴展選項(activating extensions)等。

PHP配置文件

在 開始我們的介紹之前,我們將對PHP配置文件的組織方式進行簡要的說明。文件命名爲php.ini的原因之一就是它遵循許多Windows應用程序中 INI文件的常見結構。它是一個ASCII文本文件,並且被分成幾個不同名稱的部分,每一部分包括與之相關的各種變量。每一部分類似於如下結構:

[MySection]

variable="value"

anothervariable="anothervalue"

各部分的名稱通過方括號括起來放在頂部,然後將是一對對任意數量的“變量名——值”,每一對佔單獨一行。同常規的PHP代碼要求一樣,變量名區分大小寫且不能包含空格,變量的值可以是數字、字符串,或者布朗型(Boolean)。

每一行如果以分號開頭則表明該行是註釋語句。這也使得允許或禁止PHP功能變得非常簡單。你只需要將相關語句註釋而無需刪除,該語句就不會被系統解析。特別是當你希望在一段時間以後重新打開某種功能的時候特別方便,因爲你不需要在配置文件中將此行刪除。

爲了便於PHP識別,php.ini文件必須要麼放在當前目錄,要麼放在$PHPRC環境變量所定義的目錄中,或者是在編譯時所指定的目錄(對Windows PHP來說即Windows主目錄)。

在通過修改php.ini文件改變PHP配置之後,需要重啓Web服務器以使配置改變生效(當然這是在通過Web服務器使用PHP的情況下)。對於PHP命令行使用模式,每次只要涉及到PHP二進制程序的時候系統都會讀取配置文件。

設置解析選項

這是配置文件漫遊的第一站也是非常重要的一站:語言解釋程序相關選項。第一行是引擎變量,它將控制PHP引擎是“on”還是“off”。關閉引擎則意味着嵌入的PHP代碼將不會被Web服務器所解析。通常將其關閉是毫無意義的,所以保持開啓狀態。

engine = On

short_open_tag則控制解析器是否識別簡寫的<?...?>標誌,即將其等價爲標準<?php...?>標誌。如果預計簡寫標誌會和別的語言產生衝突,或者希望對PHP代碼採用嚴格的語法規則,那麼可以將其關閉。

short_open_tag = On

通 常而言,在PHP腳本中的會話、cookie或者HTTP文件頭數據必須在腳本產生任何輸出之前發送出去。如果在你的應用程序中不可能實現,你可以通過允 許PHP稱之爲output buffering功能來達到這一目的,此功能通過output_buffering變量進行控制。

如果打開 output buffering,PHP將把腳本產生的運行結果存放在特殊的內存緩衝區域內,並在得到明確指示時纔將其發送出去。通過這樣的方式,你甚至可以在腳本中 部或者腳本尾部發送特殊的HTTP文件頭以及cookie數據。當然,這樣會造成腳本運行性能一定程度的下降。

output_buffering = Off

你還可以爲output_buffering變量賦值以指定緩衝區域大小,例如:

output_buffering = 2048

當PHP啓動的時候,它將在Web服務器標準頭信息中添加PHP版本號信息。如果希望關閉此功能,可以將expose_php設置爲false。這項功能非常有用,例如,可以在Web服務器上屏蔽此信息以防範潛在的黑客攻擊。

expose_php = On

現在來看看如何設置查找路徑以及差錯控制。

設置PHP查找路徑

可以通過include_path變量設置PHP查找路徑。它允許包括一系列目錄。在相關文件調用缺少指定路徑的情況下,PHP將自動檢查這些目錄。

如果有頻繁使用的函數庫或類,也可以將其位置寫在這裏以方便查找。這也是一個很好的添加PHP的PEAR目錄路徑的地方,此路徑將包括很多可重用的類。

include_path = ".:/usr/local/lib/php/pear:"

Windows用戶可以通過分號分割路徑名來指定多路徑;UNIX用戶則需要使用冒號。

另 外兩個有趣的變量是auto_prepend_file以及auto_append_file。這些變量指定PHP自動添加到任何PHP文檔文件頭或文件 尾的其他文件。這對於爲PHP產生的頁面添加頁眉或頁腳非常有用,可以節省爲每個PHP文檔添加代碼的時間。但需要注意這裏的指定文件將會添加到所有的 PHP文檔中,所以這些變量必須適合單應用程序(single-application)的服務器。

所包含的文件要麼是PHP腳本,要麼是普通的HTML文檔。嵌入式PHP代碼必須用標準<?php...?>標記括起來。

auto_prepend_file = /home/web/includes/header.php

auto_append_file = /home/web/includes/legal.php

差錯處理

PHP 的差錯可以分爲四類:解析錯誤、關於代碼小問題的提示(notice)(例如變量未初始化)、警告(除了非致命錯誤),以及致命錯誤(fatal errors)。通常而言,當PHP遇到除第二種(關於代碼小問題的提示)以外的錯誤時,將顯示錯誤信息,並且如果屬於致命錯誤則會立即停止代碼處理。你 可以通過修改error_reporting變量來對此功能進行修改。此變量可以接收一比特位的錯誤代碼,且只顯示同這些代碼相同的錯誤。

error_reporting = E_ALL

要關閉顯示所有錯誤——在產品代碼中通常建議這麼做——可以將display_errors變量設置爲false,並使用log_errors變量將信息寫入錯誤日誌(error log)。

此 舉可以提高系統的安全性能——通過關閉錯誤顯示,你可以將系統的特定信息隱藏起來,惡意用戶就無法利用這些信息試圖入侵站點或應用程序。但你應當通過將 error_log變量指定爲文件名或特殊值“syslog”,從而將這些錯誤信息寫入到自定義日誌文件或者系統日誌中。請記住定期檢查這些文件,以知道 在應用程序內部到底發生了什麼。

display_errors = Off

log_errors = On

error_log = "error.log"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章