Apache 與 PHP 的關係


Posted by tzutzu858 on 2020-08-26

  • Apache 是一個伺服器端的軟體,主要依據 NCSA 的 HTTPd 伺服器發展而來,為自由軟體
  • PHP (PHP:Hypertext Preprocessor) 超文字預處理器,適用於網路開發並可嵌入 HTML 中使用。

為了讓 HTTP 這個協定得以順利的應用,大約在 90 年代初期由伊利諾大學的國家超級電腦應用中心 (NCSA, http://www.ncsa.illinois.edu/) 開發出伺服器 HTTPd (HTTP daemon 之意)。HTTPd 為自由軟體,所以很快的領導了 WWW 伺服器市場。 後來網景通訊 (Netscape) 開發出更強大的伺服器與相對應的用戶端瀏覽器,那就是大家曾經熟悉的 Netscape 這套軟體啦。這套軟體分為伺服器與瀏覽器,其中瀏覽器相對便宜,不過伺服器可就貴的嚇人了。 所以,在伺服器市場上主要還是以 HTTPd 為主的。

後來由於 HTTPd 這個伺服器一直沒有妥善的發展,於是一群社群朋友便發起一個計畫,這個計畫主要在改善原本的 HTTPd 伺服器軟體,他們稱這個改良過的軟體為 Apache,取其『一個修修改改的伺服器 (A patch server)』的雙關語! ^_^!這個 Apache 在 1996 年以後便成為 WWW 伺服器上市佔率最高的軟體了 (http://httpd.apache.org/)。

文章來自: 鳥哥第二十章、WWW 伺服器


Apache 與 PHP 的關係

request => apache => php => output => html =>apache => response

從幾個角度來看 apache 是真的存在
開 Chrome DevTools ,看 Network 分頁

Network 分頁:這個分頁是內建的 Proxy-sniffer,可讓您監控網頁在載入當時和之後的 HTTP 流量。

其他分頁功能


可以看到 server 的詳細情形,背後還是 php 主要執行,透過 apache 這個 server 來跑。
不過一般來說這些資訊都會隱藏起來,因為你可能不是很希望別人知道你用什麼 server
可以把他想成送一個 request 到 apache , apache 裡面有一個 funstion 來跑,而 php 在裡面的作用只是把 request ,幫你轉成你要輸出的形式。

apache
function run(request) {
    response = php(request)
    send response
}

所以如果你的 apache 掛掉,你什麼都不能做,但如果你的 php 掛掉,只是回傳回一些錯誤訊息。所以 apache 這個 server 本身要做的事情只是把 request 拿進來,丟到 php,拿到 output 之後傳回去。

你就把服務器看成一間餐館,apache是店面的傳菜員,php是廚房的廚師。有些飲料之類的(靜態資源,如:HTML、CSS、JS、Images等),不用經過廚師,直接由傳菜員傳遞給顧客(Client)。如果需要廚師烹飪的菜式(例如:*.PHP等),就需要先等廚師把原始食材(php)烹飪完變成可以吃用的飯菜(靜態資源),傳菜員才能上菜。

文章:https://www.zhihu.com/question/19896544/answer/83808274


另外可以網址有一些規則,會發現跟你的資料夾結構是符合的。不過這個設定是可以調的,改 apache 預設根目錄,打開設定檔,路徑:
mac : apache2/conf/httpd.conf
windows : apache/conf/httpd.conf










Related Posts

[Release Notes] 20210317_v1 - Support Insert img path and save button in post editor

[Release Notes] 20210317_v1 - Support Insert img path and save button in post editor

TypeScript 函式定義字串型別相連和JavaScript String.prototype.concat() 的差異

TypeScript 函式定義字串型別相連和JavaScript String.prototype.concat() 的差異

4. 金融貨幣格式

4. 金融貨幣格式


Comments