PHP簡介及配置檔案解析

dbasdk發表於2017-08-31

PHP是什麼


PHPHypertext Preprocessor超文字前處理器的縮寫,是一種廣泛使用的伺服器端程式語言,用於開發動態網頁,是目前動態網頁開發中使用最為廣泛的語言之一。


簡單的說,PHP是一種Web伺服器端開發語言,用於快速進行動態網頁開發。

其特點包括:

(1)開源、跨平臺、獨立於架構;

(2)解釋型、物件導向、資料庫支援;

(3)快速、簡單易學、健壯、安全、效能優越。

 

類似的開發語言有ASPJSP

PHP與ASP、JSP語言以其優異的效能、強大的資料庫操作功能迅速成為主流的Web伺服器端開發語言。

PHP+Apache+MySQL的組合(三者都是開源的)是一個完全免費、效能優異的Web伺服器應用開發組合,已成為絕大多數中小型網站的應用解決方案。

 

早期的Web應用伺服器端程式是用PerlC語言直接編寫CGI(common Gateway Interface,公共閘道器介面)程式,或者利用Web伺服器自帶的API,或者採用第三方解決方案,這些方法均有各自的強項,但在執行速度、資料庫操作方面均不能滿足Web應用不斷增長的需求。

 

PHP主要用於以下3個應用領域:

1)伺服器端指令碼程式

2)命令列指令碼程式

3)桌面應用程式

使用PHP編寫伺服器端指令碼程式是PHP 最常用的應用領域。

PHP程式的工作流程

(下圖來自網路                             

Web伺服器:一般選擇開源的Apache或Nginx

資料庫:一般選擇開源的MySQL

PHP直譯器:PHP軟體包

常見的是部署在Linux和Windows平臺。

有對應的整合安裝包,如Windows平臺的WAMP,Linux平臺的LAMP、LNMP。



PHP配置檔案解析

PHP配置檔案php.ini在PHP啟動時被讀取。

對於作為Web伺服器模組版本的PHP,僅在Web伺服器啟動時讀取一次。

Windows環境下php.ini的搜尋路徑如下(按順序):

(1)Apache配置檔案httpd.confPHPIniDir指定的路徑

(2)HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath  (即Windows登錄檔位置)

(3)PHPRC環境變數

(4)Web伺服器目錄或者PHP所在目錄(Windows下其它情況)

(5)Windows目錄(c:\windowsc:\winnt

可以透過info.php的輸出頁面中Loaded Configuration File項的值來判斷伺服器當前讀取的PHP配置檔案是哪一個。如下圖所示:             

 


需要關注的引數:

extension_dir

PHP搜尋擴充套件庫的位置。PHP擴充套件庫一般放在PHP目錄下面的ext資料夾內,是一組.DLL動態連結庫檔案。

 

short_open_tag(Boolean)

決定是否允許使用PHP程式碼中開始標誌的縮寫形式()。

如果要和XML結合使用,可以禁用此選項以便於嵌入使用

不禁用的話可以透過PHP來輸出,例如:<!--?php echo '

如果禁用了,必須使用PHP程式碼開始標誌的完整形式()。

注意:此引數也會影響到縮寫形式<!--?=,它和<? echo等價。使用此縮寫需要short_open_tag的值為on。

 

memory_limit(integer)

這個引數設定了一個指令碼所能夠申請到的最大記憶體位元組數。這有助於防止寫得不好的指令碼消耗光伺服器上的可用記憶體。要使用此引數必須在編譯的時候啟用(如果是原始碼編譯安裝的話,即在configure一行中應該加上引數:--enable-memory-limit)。如果不需要任何記憶體上的限制,必須設定次引數值為-1

PHP4.3.2版起,當啟用了memory_limit,PHP函式memory_get_usage()便可以使用了。當使用integer型別時,其值以位元組為度量單位。

 

track_vars(boolean)

如果啟用,則環境變數GETPOSTCookieServer都能夠分別在全域性關聯陣列中找到:

$_ENV、$_GET、$_POST、$_COOKIE和$_SERVER

注意:自PHP4.0.3版起,track_vars總是開啟的。

 

arg_separator.output(string)

表示PHP所產生的URL中用來分隔引數的分隔符。

 

arg_separator.input(string)

表示PHP用來將URL解析為變數的分隔符列表(注意:這裡的每個字元都會被當成分隔符!)

 

variables_order(string)

設定EGPCSEnvironmentGETPOSTCookieServer)變數解析的順序,預設設定為“EGPCS”。

如果設定為“GP”,會導致PHP完全忽略環境變數(ENV)、Cookie和Server變數,並用GET方法的變數覆蓋POST方法的同名變數。

 

auto_globals_jit(boolean)

啟用後,SERVERENV變數在它們第一次使用後便被建立,而不是等到指令碼開始執行時。

如果這些變數沒有在指令碼中使用,啟用這個引數會提高伺服器效能。

注意:要使此選項有效,PHP配置選項register_globals、register_long_arrays和register_argc_argv必須禁用。

 

register_long_arrays(boolean)

設定PHP是否註冊過時的$HTTP_*_VARS之類的預定義變數。

預設為on(啟用),此時類似$HTTP_GET_VARS的PHP變數會被註冊。

如果不使用,為效能考慮建議關閉此選項,而使用超全域性陣列例如$_GET替代。

此引數自PHP5.0.0版本起可用。

 

post_max_size(integer)

設定POST資料所允許的最大大小。位元組為單位。

此設定也影響到檔案上傳。要上傳大檔案,此引數的值必須大於upload_max_filesize。

如果配置指令碼中啟用了記憶體限制memory_limit,也會影響檔案上傳。

通常memory_limit應該比post_max_size要大。

如果POST資料尺寸大於post_max_size,$_POST和$_FILES superglobals便會為空。

 

gpc_order(string)

設定GET/POST/COOKIE三個變數解析的順序,預設為“GPC”。

如果設定為“GP”,會導致PHP完全忽略Cookie變數,並用GET方法的變數覆蓋POST方法的同名變數。

注意:本選項不能用與PHP4中,可用variables_order替代之。

 

include_path(string)

指定一組目錄用於require()include()fopen_with_path()函式來尋找檔案。格式和系統的PATH環境變數類似:一族目錄的列表。

注意:目錄列表在Linux/Unix系統下用冒號:分隔,在Windows系統下用分號;分隔。

 

doc_root(string)

PHP在伺服器上的根目錄。僅在非空是使用。

如果PHP被配置為安全模式,則此目錄之外的檔案一概不解析。

如果PHP編譯時沒有指定FORCE_REDIRECT,並且在任何Web伺服器(除了IIS)中以CGI方式執行PHP,則應該設定doc_root。另一種替代方案是使用cgi.force_redirect配置選項。

 

user_dir(string)

在使用者目錄之下使用PHP檔案的基本目錄名,例如public_html

 

extension_dir(string)

PHP用來尋找動態連結擴充套件庫的目錄。

 

enable_dl(boolean)

此選項只有在PHP作為Apache模組方式執行的時候才是有用的。

設定為on時,可以在PHP指令碼執行的過程中透過PHP內建函式dl()來動態載入PHP擴充套件庫。

這個配置選項對安全性有一定的影響,所以在安全模式下,是不能使用dl()函式的。

 

extension(string)

PHP啟動時所載入的動態連結擴充套件庫。

 

file_uploads(boolean)

是否允許HTTP檔案上傳。

 

upload_tmp_dir(string)

檔案上傳時存放檔案的臨時目錄。必須是PHP程式所有者使用者可寫的目錄。如果未指定則使用系統預設值。

 

upload_max_filesize(integer)

所上傳檔案的最大大小。位元組為單位。


參考:
1、《PHP5與MySQL5從入門到精通》一書
2、PHP程式的工作流程圖來自網路               


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29734436/viewspace-2144363/,如需轉載,請註明出處,否則將追究法律責任。

相關文章