前言
本文介紹建置 PHP 開發環境的過程。實務上 PHP 網頁程式會托管在 GNU/Linux 上,故這裡的說明會以 GNU/Linux 為主。但會簡單介紹在 Windows 上的使用方式,讓還沒學習 GNU/Linux 的讀者也可以學習 PHP。
先不要裝 Apache 和 MySQL 也可以
典型的 PHP 教學會在一開始就安裝 PHP + Apache (網頁伺服器) + MySQL (關連式資料庫) 的全家餐。Windows 上甚至還有數個一鍵安裝的軟體,像是 XAMPP、MAMP、Laragon。但是,這不是必要的,一開始只裝 PHP 即可。
原本安裝 Apache 或 Nginx 的目的是輸出 PHP 腳本所生成的動態網頁。由於目前的 PHP 有內建開發用網頁伺服器,安裝 Apache 或 Nginx 不是必要的。MySQL 則是用來存資料的,一開始不會用到,所以先不裝無妨。由於使用 Apache、Nginx、MySQL 等軟體都要學習設置檔的配置方式。對初學者來說,這是額外的負擔。
在 GNU/Linux 上安裝 PHP
CentOS
在 CentOS 上輸入以下指令即可安裝 PHP:
$ sudo dnf install php php-devel
php-devel 是標頭檔的部分,是為了安裝 PHP 延伸套件 (extension package) 而安裝的。如果用不到可先略去。
Ubuntu
在 Ubuntu 上輸入以下指令即可安裝 PHP:
$ sudo apt install php php-dev
同理,php-dev 是標頭檔的部分。
openSUSE
在 openSUSE 上輸入以下指令即可安裝 PHP:
$ sudo zypper install php7 php7-devel
同理,php7-devel 是標頭檔的部分。
在 Windows 上安裝 PHP
到 PHP 的官方網站下載 PHP 的主程式即可。在 Windows 上的程式會分為 non thread safe 和 thread-safe 的版本,這主要和網頁程式的形態相關 (出處)。對於基本的學習來說沒差。
也可以使用 Chocolatey 來安裝 PHP。只要輸入一行指令即可:
> choco install php
在筆者撰寫這篇文章時,PHP 的大版本號已經來到 PHP 8 了。所以這行指令會安裝 PHP 8。
筆者先前提過,目前許多 GNU/Linux 發行版的 PHP 的大版本號仍停留在 PHP 7。所以,也可以刻意安裝先前的版本:
> choco install php --version=7.4.22
(選擇性) 安裝 Laragon
一鍵安裝 PHP 套餐的軟體有很多,這裡以 Laragon 為例,說明安裝和使用這類軟體的方式。
選擇安裝時所用的語言:
Laragon 可以選擇正體中文。這裡使用英文 (English)。
選擇安裝位置:
沒有明確理由的話,使用預設位置即可。即使要換安裝位置,也不應該在安裝路徑上使用空白 (space),以免造成不必要的麻煩。
選擇額外的功能:
這些功能是不必要的,故將其取消。
準備安裝 Laragon:
這裡只是確認一下配置是否正確,繼續下一步即可。
安裝完成時出現的訊息:
安裝完後,開啟 Laragon 主程式,到 Preferences (偏好設置) 裡選擇要啟動的服務:
筆者比較習慣用 Nginx,所以把 Apache 停掉。如果暫時不需要 MySQL 的話,也可以先停用。
第一次啟動服務時,Windows Defender (防火牆) 會發出以下的警告訊息:
直接允許即可。我們不會長時間開著這些服務,用完後即會停止這些服務。或許有些程式設計師會拿這些一鍵安裝軟體直接架站。不過,為了安全考量,實際要上線的網頁程式還是托管在 GNU/Linux 上比較好,這些一鍵安裝軟體只是拿來練習 PHP 的。
筆者先前嘗試過 MAMP。但使用 MAMP 時,有些網頁上的圖片無法正常顯示,故筆者改用 Laragon。
(選擇性) 設置 Nginx
Nginx 的設置比較複雜。設錯的話,可能會無法觀看該伺服器上的網頁;若發生嚴重錯誤,Nginx 伺服器會無法啟動和運作。
筆者在這裡列出一個 Nginx 設定檔的範例。使用 Laragon 的話,該設定檔會寫在 C:/laragon/etc/nginx/site-enabled/00-default.conf 。Laragon 的 Nginx 設定檔是參考 Ubuntu 的配置來設定的。
請讀者細細參考本範例設定檔來設置 Nginx 伺服器。確認每一行所代表的意義,想一下是否適用於自己的情境。不要胡亂地貼上他人所給的 Nginx 範例設置,那不一定適用於自己的情境。
# A sample Nginx configuration for Laragon.
#
# Don't simply copy and paste the configuration here. Instead,
# modify it according to your own situations.
server {
# Port of your server.
listen 80 default_server;
# Domain name of your server.
server_name localhost ;
root "C:/laragon/www/";
# Set index page.
index index.html index.htm index.php;
# Restrict access to local network only.
allow 127.0.0.1;
deny all;
include "C:/laragon/etc/nginx/alias/*.conf";
# Route to root path of a web server.
location / {
try_files $uri $uri/ =404;
autoindex on;
}
# Pass PHP scripts to a FastCGI server.
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass php_upstream;
#fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
charset utf-8;
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
# Disallow access to Apache configuration files.
location ~ /\.ht {
deny all;
}
}
按照此設置,在開啟 Nginx 伺服器後,到 http://localhost 即可看到網頁。日後自己寫的 PHP 命令稿,放到 C:/laragon/www 即可。
(選擇性) 安裝 C 開發環境
如果要編譯 PHP 延伸套件的話,需要 C 編譯器。這裡介紹在 GNU/Linux 上建置 C 開發環境的過程。一開始學習 PHP 語法的階段,可先略去這個動作。
在 Windows 上編譯 PHP 延伸套件的實用性甚低,因為 Windows 不是托管 PHP 網頁程式的主要平台,故不需過度鑽研這方面的議題。
確認 PHP 可用
使用 php --version
指令即可觀看系統上的 PHP 版本:
$ php --version
PHP 7.2.24-0ubuntu0.18.04.7 (cli) (built: Oct 7 2020 15:24:25) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.24-0ubuntu0.18.04.7, Copyright (c) 1999-2018, by Zend Technologies
with Xdebug v2.6.0, Copyright (c) 2002-2018, by Derick Rethans
如果有顯示某個版本號,代表可以使用 PHP。如果沒有看到版本號,可能是系統上沒安裝 PHP 或是沒有正確地設置 PATH 環境變數。請自行確認並排除問題。
選擇順手的編輯器
雖然市面上也有一些給 PHP 用的 IDE,剛開始學 PHP 時,先用 VSCode 即可。等學久一點,自然會知道自己需要什麼樣的編輯器。