PHP 內建 Web server 使用教學 for Linux

PHP

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,也必須指定)
  • -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]: /

參考

發表留言