PHP簡介及配置檔案解析
PHP是什麼
PHP是Hypertext Preprocessor超文字前處理器的縮寫,是一種廣泛使用的伺服器端程式語言,用於開發動態網頁,是目前動態網頁開發中使用最為廣泛的語言之一。
簡單的說,PHP是一種Web伺服器端開發語言,用於快速進行動態網頁開發。
其特點包括:
(1)開源、跨平臺、獨立於架構;
(2)解釋型、物件導向、資料庫支援;
(3)快速、簡單易學、健壯、安全、效能優越。
類似的開發語言有ASP、JSP。
PHP與ASP、JSP語言以其優異的效能、強大的資料庫操作功能迅速成為主流的Web伺服器端開發語言。
PHP+Apache+MySQL的組合(三者都是開源的)是一個完全免費、效能優異的Web伺服器應用開發組合,已成為絕大多數中小型網站的應用解決方案。
早期的Web應用伺服器端程式是用Perl或C語言直接編寫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.conf中PHPIniDir指定的路徑
(2)HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath (即Windows登錄檔位置)
(3)PHPRC環境變數
(4)Web伺服器目錄或者PHP所在目錄(Windows下其它情況)
(5)Windows目錄(c:\windows或c:\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)
如果啟用,則環境變數GET、POST、Cookie和Server都能夠分別在全域性關聯陣列中找到:
$_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)
設定EGPCS(Environment、GET、POST、Cookie、Server)變數解析的順序,預設設定為“EGPCS”。
如果設定為“GP”,會導致PHP完全忽略環境變數(ENV)、Cookie和Server變數,並用GET方法的變數覆蓋POST方法的同名變數。
auto_globals_jit(boolean)
啟用後,SERVER和ENV變數在它們第一次使用後便被建立,而不是等到指令碼開始執行時。
如果這些變數沒有在指令碼中使用,啟用這個引數會提高伺服器效能。
注意:要使此選項有效,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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Logback簡介及配置檔案logback.xml詳解XML
- 04 . Filebeat簡介原理及配置檔案和一些案例
- php生成配置檔案config.php 生成陣列配置檔案PHP陣列
- vue 腳手架 配置 及檔案介紹Vue
- Express檔案表單解析中介軟體 Multer簡介Express
- php 自定義配置檔案PHP
- YAML檔案簡介YAML
- vue 腳手架 配置 及檔案介紹 2.0 版本Vue
- java解析yaml配置檔案JavaYAML
- DHCP常用配置檔案解析
- PHP配置檔案詳解php.iniPHP
- 01 . MongoDB簡介及部署配置MongoDB
- iOS 檔案操作簡介iOS
- 文盤Rust -- 配置檔案解析Rust
- Benchmarksql的props配置檔案解析SQL
- Spring的簡介安裝及配置Spring
- ZooKeeper: 簡介, 配置及運維指南運維
- YAM yml 配置檔案介紹
- jmeter基礎之目錄結構解析及配置檔案修改JMeter
- Mybatis對映檔案簡介MyBatis
- 檔案管理簡單介紹
- 分散式檔案儲存hdfs簡介及常用命令分散式
- 原始碼解析Flask的配置檔案原始碼Flask
- mybatis原始碼配置檔案解析之五:解析mappers標籤(解析XML對映檔案)MyBatis原始碼APPXML
- MySQL 配置檔案位置及命名。MySql
- logstash 配置檔案語法介紹
- 簡單介紹nacos單機本地配置檔案儲存位置方式
- php修改php.ini配置檔案中disable_functionsPHPFunction
- 織夢php資料庫配置檔案PHP資料庫
- nginx 如何解析php檔案php-fpm的解釋NginxPHP
- 配置中心之Nacos簡介,使用及Go簡單整合Go
- GNU make-Makefile檔案簡介
- 檔案拆分命令 split 使用簡介
- php解析mpp檔案中的前置任務PHP
- PHP檔案及執行(適合PHP初學者)PHP
- 差異檔案(diff)和補丁檔案(patch)簡介
- springMVC---配置檔案解析(web.xml)SpringMVCWebXML
- PHP單一檔案入口框架簡析PHP框架
- PHP Filesystem 簡介PHP