① 什麼是安裝了PHP的web伺服器
你主要要理解web伺服器,安裝了php的伺服器,那麼說明你的web伺服器支持php頁面運行,一般用的是apache當然IIS經過配置是可以運行php程序的。如有問題接著再聊。
② 如何設置PHP 5.4內置的web伺服器
PHP是一種腳本語言,它需要PHP解釋器來分析運行PHP文件。當把PHP做為CGI服務Web請求時,它需要被嵌入到某種Web伺服器里,最常 見的是集成到Apache或IIS里,這就是說,在使用PHP前,你需要安裝Apache或IIS,並且正確的配置它們和PHP集成的參數。雖然這種配置 已經很規范,文檔非常豐富,但我們還是經常在安裝Apache和PHP集成時遇到問題,而且,有時候我們只想測試一個簡單的PHP特徵,不想就為此安裝、 啟動Apache服務。
但據官方文檔上說,這個內置的Web伺服器只是提供開發測試使用,不推薦使用中生產環境中。因為這個伺服器接受處理請求時順序執行的,不能並發處理。
這個內置的web伺服器使用起來非常的方便,你只需要執行下面的命令:
?
1
$ php -S localhost:8000
然後就可以訪問了。這樣啟動後,默認的web服務目錄是執行命令的當前目錄,如果不想使用當前目錄,你需要使用 -t 參數來指定。
例 #1 啟動Web伺服器
?
1
2
$ cd ~/public_html
$ php -S localhost:8000
終端輸出信息:
?
1
2
3
4
PHP 5.4.0 Development Server started at Thu Jul 21 10:43:28 2011
Listening on localhost:8000
Document root is /home/me/public_html
Press Ctrl-C to quit
當請求了 http://localhost:8000/ 和 http://localhost:8000/myscript.html 地址後,終端輸出類似如下的信息:
?
1
2
3
4
5
6
7
8
9
PHP 5.4.0 Development Server started at Thu Jul 21 10:43:28 2011
Listening on localhost:8000
Document root is /home/me/public_html
Press Ctrl-C to quit.
[Thu Jul 21 10:48:48 2011] ::1:39144 GET /favicon.ico - Request read
[Thu Jul 21 10:48:50 2011] ::1:39146 GET / - Request read
[Thu Jul 21 10:48:50 2011] ::1:39147 GET /favicon.ico - Request read
[Thu Jul 21 10:48:52 2011] ::1:39148 GET /myscript.html - Request read
[Thu Jul 21 10:48:52 2011] ::1:39149 GET /favicon.ico - Request read
例 #2 啟動web伺服器時指定文檔的根目錄
?
1
2
$ cd ~/public_html
$ php -S localhost:8000 -t foo/
終端顯示信息:
?
1
2
3
4
PHP 5.4.0 Development Server started at Thu Jul 21 10:50:26 2011
Listening on localhost:8000
Document root is /home/me/public_html/foo
Press Ctrl-C to quit
如果你在啟動命令行後面附加一個php腳本文件,那這個文件將會被當成一個「路由器」腳本。這個腳本將負責所有的HTTP請求,如果這個腳本執行時返回FALSE,則被請求的資源會正常的返回。如果不是FALSE,瀏覽里顯示的將會是這個腳本產生的內容。
例 #3 使用路由器腳本
在這個例子中,對圖片的請求會返回相應的圖片,但對HTML文件的請求會顯示「Welcome to PHP」:
?
1
2
3
4
5
6
7
8
<?php
// router.php
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) {
return false; // serve the requested resource as-is.
} else {
echo "<p>Welcome to PHP</p>";
}
?>
執行:
?
1
$ php -S localhost:8000 router.php
例 #4 判斷是否是在使用內置web伺服器
通過程序判斷來調整同一個PHP路由器腳本在內置Web伺服器中和在生產伺服器中的不同行為:
?
1
2
3
4
5
6
7
<?php
// router.php
if (php_sapi_name() == 'cli-server') {
/* route static assets and return false */
}
/* go on with normal index.php operations */
?>
執行:
?
1
$ php -S localhost:8000 router.php
這個內置的web伺服器能識別一些標準的MIME類型資源,它們的擴展有:.css, .gif, .htm, .html, .jpe, .jpeg, .jpg, .js, .png, .svg, and .txt。對.htm 和 .svg 擴展到支持是在PHP 5.4.4之後才支持的。
③ web伺服器運行php腳本語言的流程是什麼
web伺服器是用來接收HTTP請求並響應這個請求(如按照客戶端的請求去對資料庫數據進行操作),通常在WEB開發中如果客戶端發起請求給服務端,那麼必須有WEB伺服器,否則這個請求是沒人收的。在早期的WEB開發中都是使用CGI來處理客戶端請求的,那時候還沒有這種專為WEB開發而設計的語言如PHP,不能夠做到HTML代碼和後台邏輯代碼的分離,所以CGI程序返回的結果通常都會包含一些HTML代碼,瀏覽器接收到整個結果然後進行渲染。後來經過發展有了PHP這種可以將前後端進行分離的WEB開發語言,PHP代碼只負責處理後台邏輯,將大量的HTML代碼放在靜態HTML文件中,瀏覽器最後渲染的結果是伺服器返回的HTML代碼加JS代碼加CSS代碼以及PHP模板輸出的綜合結果。web伺服器的運行,早期是以CGI為橋梁,然後運行php腳本語言。。亂答一通了。。勿噴。。
④ 怎麼讓本地WEB伺服器支持PHP
下個resin,本身就支持PHP.非常方便。
⑤ 簡述在web伺服器中,Apache和PHP的工作流程
那麼php的運行原理就是Apache、PHP、瀏覽器之間的協作過程:
①當用戶在瀏覽器地址中輸入要訪問的PHP頁面文件名,然後回車就會觸發這個PHP請求,並將請求傳送化支持PHP的WEB伺服器(apache)。
②WEB伺服器(apache)接受這個請求,並根據其後綴進行判斷如果是一個PHP請求,WEB伺服器(apache)從硬碟或內存中取出用戶要訪問的PHP應用程序,並將其發送給PHP引擎程序。
③PHP引擎程序將會對WEB伺服器(apache)傳送過來的文件從頭到尾進行掃描並根據命令從後台讀取,處理數據,並動態地生成相應的HTML頁面。
④PHP引擎將生成HTML頁面返回給WEB伺服器(apache)。WEB伺服器(apache)再將HTML頁面返回給客戶端瀏覽器,最後一個完整的頁面基於通過瀏覽器展現在我們眼前。