PHP 內建 Web server 使用教學 for Linux
PHP 5.4 開始提供一個內建的 Web server (用於本地開發,不可在實際產品使用),而不須依賴 Apache 或 NGINX 來提供 Web server 的環境,讓開發測試更方便。
Firewall
Firewall 必須允許 PHP 內建 Web server 要運行的 Port,本文章使用 http 預設 80 port。
設定 Firewall 允許 http service:
firewall-cmd --permanent --add-service=http
success
firewall-cmd --reload
success
檢查 Firewall 的設定,已允許 http Service:
firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3
sources:
services: ssh dhcpv6-client http
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
啟動 PHP 內建 Web server
啟動內建 Web server 的指令與參數:
- -S:啟動內建 Web Server。
- IP
- 外部遠端訪問:0.0.0.0。(可讓外部使用 Server IP,如本文章 192.168.1.114 訪問)
- 僅本地可訪問:localhost。
- Port:指定的 Port。(即使是 http 預設的 80 Port,也必須指定)
- IP
- -t:指定網站根目錄。(如未指定,則使用當前啟動指令的目錄為網站根目錄)
- Directory:指定的網站根目錄路徑。
php -S IP:Port -t Directory
訪問時如未指定 *.php 或 *.html 檔案,預設會執行網站根目錄內的 index.php 或 index.html,如果都不存在則 Server 返回 404 錯誤。
預設當前網站根目錄
先建立測試檔案:
vi index.php
<?php
echo '<h1>' . __FILE__ . '</h1>';
啟動 Web Server:
php -S 0.0.0.0:80
PHP 7.2.5 Development Server started at Fri Apr 27 10:32:27 2018
# 目前在監聽
Listening on http://0.0.0.0:80
# 網站根目錄
Document root is /root
# Ctrl + C 可離開
Press Ctrl-C to quit.
使用瀏覽器訪問:
訪問時終端機會顯示如下第 5 行訊息:
PHP 7.2.5 Development Server started at Fri Apr 27 10:36:35 2018
Listening on http://0.0.0.0:80
Document root is /root
Press Ctrl-C to quit.
[Fri Apr 27 10:36:40 2018] 192.168.1.14:51802 [200]: /
指定網站根目錄
先建立測試目錄與檔案:
mkdir public_html
vi public_html/index.php
<?php
echo '<h1>' . __FILE__ . '</h1>';
使用 –t
參數指定網站根目錄來啟動 Web Server:
php -S 0.0.0.0:80 -t ~/public_html/
PHP 7.2.5 Development Server started at Fri Apr 27 11:13:56 2018
# 目前在監聽
Listening on http://0.0.0.0:80
# 網站根目錄
Document root is /root/public_html
# Ctrl + C 可離開
Press Ctrl-C to quit.
使用瀏覽器訪問:
訪問時終端機會顯示如下第 5 行訊息:
PHP 7.2.5 Development Server started at Fri Apr 27 11:14:37 2018
Listening on http://0.0.0.0:80
Document root is /root/public_html
Press Ctrl-C to quit.
[Fri Apr 27 11:14:40 2018] 192.168.1.14:52025 [200]: /
參考
本著作係採用創用 CC 姓名標示-相同方式分享 3.0 台灣 授權條款授權.