Ubuntu 安裝 PHP 最完整教學:新手到進階多版本管理、模組安裝、Apache/Nginx 整合一次搞懂

目次

1. 前言

為什麼在 Ubuntu 上使用 PHP?

PHP 是一種伺服器端的腳本語言,被廣泛應用於 WordPress 及各種 Web 應用程式開發。特別是在網站開發領域,長期以來都是主流選擇,許多 CMS 與框架都是以 PHP 為基礎建構而成。

Ubuntu 是一個高度穩定且全球開發者都愛用的 Linux 發行版,非常適合伺服器環境。結合 Ubuntu 和 PHP,無論是個人開發還是企業級正式環境,都能靈活運用。

本篇文章的目標讀者與目的

本教學針對「想在 Ubuntu 安裝 PHP,但不知道如何開始」的新手,以及「希望安裝特定 PHP 版本」的進階用戶,提供詳細且易懂的操作步驟說明。

本文以 Ubuntu 22.04 LTS 版本為例,但基本步驟在其他版本(如 20.04 或 23.10)也大致相同。

閱讀本文後你將學會什麼?

閱讀後,你將能夠理解與實作以下內容:

  • 在 Ubuntu 上安裝 PHP 的基本方法
  • 如何安裝與切換多個 PHP 版本
  • PHP 運作確認與常見故障排除方式
  • 與 Apache 或 Nginx 的整合設定方法
  • 常用 PHP 模組的安裝方式
侍エンジニア塾

2. 安裝前的準備與前提條件

如何確認 Ubuntu 版本?

首先,請確認自己使用的 Ubuntu 版本。不同版本的安裝方法與可用模組可能略有差異。

可執行下列指令來查詢版本:

lsb_release -a

或者,也可使用下列指令取得版本資訊:

cat /etc/os-release

本篇以 Ubuntu 22.04 LTS 為範例,但 20.04、23.10 等版本基本操作步驟也相同。

將系統套件更新至最新

安裝 PHP 前,建議先將系統套件升級至最新狀態,以避免依賴衝突或錯誤。請執行以下指令進行升級:

sudo apt update
sudo apt upgrade -y

這樣 APT 套件管理員會更新索引,確保能安裝最新版套件。

安裝必要工具

有些 PHP 版本安裝時,需要「software-properties-common」這個套件來新增 repository 或管理套件。尚未安裝時,請先執行以下指令:

sudo apt install -y software-properties-common

此套件能讓你使用 add-apt-repository 指令,安裝 PHP 特定版本時(如使用 PPA)非常方便。

root 權限或 sudo 指令的使用

本文多數操作涉及系統變更,需要使用 sudo 執行指令。如果不熟悉,建議先了解 sudo 的基本用法。

3. PHP 的安裝方法

在 Ubuntu 上安裝 PHP 主要有兩種方式:一種是從官方標準軟體庫安裝,另一種是新增 PPA(Personal Package Archive)指定版本安裝。下面分別說明操作流程。

從標準套件庫安裝 PHP

Ubuntu 官方套件庫中,提供穩定的 PHP 版本。如果對版本沒有特別需求,可以直接使用以下指令:

sudo apt install -y php

安裝完成後,執行以下指令確認 PHP 是否正確安裝:

php -v

範例:

PHP 8.1.2 (cli) (built: ...)

Ubuntu 22.04 預設提供的是 PHP 8.1。

利用 PPA 安裝特定 PHP 版本

若有「想用最新 PHP」、「需要多版本切換」等需求,可新增 ondrej/php PPA,選擇所需版本安裝。

步驟 1:新增 PPA repository

sudo add-apt-repository ppa:ondrej/php
sudo apt update

此 repository 在 Ubuntu 社群非常普遍,能獲得各 PHP 版本穩定的官方支援。

步驟 2:安裝所需 PHP 版本

例如想安裝 PHP 8.2,可以這樣執行:

sudo apt install -y php8.2

同理,亦可安裝 PHP 7.4、8.0 等其他版本。

步驟 3:確認安裝版本

php -v

如安裝成功,即會顯示該版本資訊。

4. 確認 PHP 是否正確運作

PHP 安裝完成後,需檢查是否運作正常。Ubuntu 可透過 CLI(終端機)或 Web 伺服器(Apache、Nginx)確認。以下介紹各種檢查方法。

在終端機(CLI)確認

先以指令顯示 PHP 版本,確認 CLI 可正常運作:

php -v

若可正確顯示版本與編譯資訊,代表 CLI 上沒問題。

範例輸出:

PHP 8.2.10 (cli) (built: Aug 23 2023 08:12:10) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.2.10, Copyright (c) Zend Technologies

透過 Web 伺服器檢查(以 Apache 為例)

若有安裝 Apache,可建立 phpinfo() 測試頁確認 PHP 整合是否正常。

1. 建立測試檔案

在 Apache 網頁根目錄(預設 /var/www/html)建立 PHP 檔:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

2. 使用瀏覽器確認

用瀏覽器打開以下網址(本機環境):

http://localhost/info.php

3. 確認顯示內容

若可顯示詳細 PHP 資訊,代表 Apache 可正確執行 PHP。

🔍 補充: phpinfo() 會顯示敏感資訊,確認無誤後請記得刪除 info.php 檔案。

sudo rm /var/www/html/info.php

Nginx + PHP-FPM 整合檢查

Nginx 需透過 php-fpm 處理 PHP。設定正確時,可與 Apache 一樣建立 info.php 檔進行確認。若出現 500 錯誤或直接下載,需檢查 Nginx 設定的 fastcgi_passinclude fastcgi-php.conf;

5. 常用 PHP 模組安裝方式

僅安裝 PHP 本體無法啟用所有功能。多數功能由「模組(擴充套件)」提供,需視需求額外安裝。以下介紹常用的 PHP 模組。

什麼是 PHP 模組?

PHP 模組(擴充套件)用來補充資料庫連線、多字元處理、圖片處理、XML 處理等功能。

模組以 APT 套件方式提供,安裝方式如下:

sudo apt install php-模組名稱

如需指定版本,例如 php8.2-mbstring

常見 PHP 模組與用途

php-mbstring(多字元處理)

處理日文等多字元文字時必備,如日文網站、郵件處理等。

sudo apt install php-mbstring

php-mysql(MySQL/MariaDB 連線)

連接 MySQL、MariaDB 等資料庫必需,WordPress 等需用到資料庫的應用程式必裝。

sudo apt install php-mysql

php-gd(圖片處理)

處理圖片生成、轉換、縮圖等功能常用。

sudo apt install php-gd

php-xml(XML 處理)

操作 RSS、SOAP 等 XML 資料必備,CMS、API 整合常見。

sudo apt install php-xml

php-curl(HTTP 通訊)

需與外部 API 通訊時常用,現今多數框架也預設需要。

sudo apt install php-curl

php-zip(壓縮檔處理)

需處理 ZIP 壓縮/解壓檔案時必備,與檔案上傳功能常搭配。

sudo apt install php-zip

啟用模組並重啟服務

部分模組需安裝後手動啟用,請用 phpenmod 指令:

sudo phpenmod 模組名稱
sudo systemctl restart apache2

啟用後請重新啟動 Web 伺服器。

6. PHP 多版本管理與切換

在 Ubuntu 上可同時安裝多個 PHP 版本,便於開發環境或多網站伺服器需求。以下介紹 CLI 與 Apache 切換 PHP 版本方法。

在 CLI 切換 PHP 版本

update-alternatives 指令

Ubuntu 可透過 update-alternatives 指令,輕鬆切換 CLI 使用的 PHP 版本。

步驟 1:查詢已安裝 PHP 版本

ls /usr/bin/php*

步驟 2:用 update-alternatives 註冊 PHP 版本(首次時)

sudo update-alternatives --install /usr/bin/php php /usr/bin/php7.4 74
sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.2 82

步驟 3:選擇使用版本

sudo update-alternatives --config php

執行後會出現選擇畫面,輸入欲切換的版本編號即可。

步驟 4:確認切換結果

php -v

在 Apache 切換 PHP 版本

Apache 可透過啟用/停用不同版本的 PHP 模組來切換。

1. 查詢可用 PHP 模組

ls /etc/apache2/mods-available | grep php

2. 停用目前啟用的版本

sudo a2dismod php7.4

3. 啟用新版本

sudo a2enmod php8.2

4. 重新啟動 Apache 使變更生效

sudo systemctl restart apache2

如此可同時切換 CLI 與 Apache 執行的 PHP 版本。

7. Apache 與 Nginx 的 PHP 整合設定

PHP 必須與 Web 伺服器結合才能運行網站。Ubuntu 常見伺服器有 ApacheNginx,以下分別說明設定方法。

Apache 整合(mod_php 模組)

Apache 透過 mod_php 可直接處理 PHP 檔案,設定簡單,適合 WordPress 等 CMS。

步驟 1:安裝 Apache 與 mod_php

sudo apt install -y apache2 libapache2-mod-php

安裝 libapache2-mod-php 後,Apache 即可執行 PHP 檔。

步驟 2:重啟 Apache

sudo systemctl restart apache2

步驟 3:建立 PHP 測試檔並驗證

/var/www/html 建立 test.php 檔,內容如下,並用瀏覽器訪問:

<?php
phpinfo();
?>

訪問網址:

http://localhost/test.php

Nginx 整合(PHP-FPM)

Nginx 本身無法直接執行 PHP,需透過 PHP-FPM (FastCGI Process Manager)協同運作。

步驟 1:安裝 Nginx 與 PHP-FPM

sudo apt install -y nginx php-fpm

步驟 2:編輯 Nginx 設定檔

一般編輯 /etc/nginx/sites-available/default

sudo nano /etc/nginx/sites-available/default

加入以下設定段落:

location ~ .php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}

步驟 3:重啟 Nginx

sudo systemctl restart nginx

步驟 4:用 PHP 檔案驗證是否成功

同 Apache,建立 /var/www/html/test.php,用瀏覽器訪問檢查。

補充:防火牆(UFW)設定(如有需要)

若使用 UFW,可執行下列指令允許網頁伺服器通訊:

sudo ufw allow 'Apache Full'
# 或者
sudo ufw allow 'Nginx Full'

一般來說 Apache 設定簡單,Nginx 效能優越。可依用途選擇並確保正確整合 PHP。

8. 常見問題與故障排除

即使正確安裝 PHP,遇到設定錯誤或環境問題時也可能無法正常運作。以下彙整常見問題與解決方式。

PHP 無法正確執行(網頁顯示原始碼)

原因

Apache 或 Nginx 沒有正確處理 PHP,導致直接輸出檔案內容,通常是 PHP 模組或 FastCGI 設定有誤。

解決方法

  • Apache:
    確認 libapache2-mod-php 已安裝並啟用,再重啟 Apache。
  sudo apt install libapache2-mod-php
  sudo systemctl restart apache2
  • Nginx:
    確認 php-fpm 安裝正確,並檢查 Nginx 設定的 fastcgi_pass 路徑是否正確。
  sudo systemctl restart php8.2-fpm
  sudo systemctl restart nginx

某些 PHP 功能(函數)無法使用

原因

缺少必要 PHP 模組,或未啟用。

解決方法

  • 安裝對應模組(如 mbstringxmlcurl 等)。
  sudo apt install php-mbstring php-xml php-curl
  • 啟用模組後請重啟 Web 伺服器。
  sudo systemctl restart apache2  # 或 nginx
  • 查詢已啟用模組清單:
  php -m

PHP 錯誤訊息未顯示於畫面

原因

預設 PHP 不會將錯誤訊息顯示在畫面上。

解決方法

請編輯 php.ini,調整錯誤顯示設定。

sudo nano /etc/php/8.2/apache2/php.ini

找到並修改以下設定:

display_errors = On
error_reporting = E_ALL

修改後請重啟 Web 伺服器。

sudo systemctl restart apache2

如何查詢錯誤日誌

Apache:

/var/log/apache2/error.log

Nginx:

/var/log/nginx/error.log

PHP-FPM 日誌(Nginx 配合時):

/var/log/php8.2-fpm.log

可查詢這些日誌協助排查問題:

sudo tail -f /var/log/apache2/error.log

發生錯誤時,建議依「查看日誌 → 檢查設定 → 重啟伺服器」的順序冷靜排解。

9. 結論

本文以「在 Ubuntu 安裝 PHP」為主題,從基礎到進階完整教學,整理重點如下,並建議你可進一步學習下列主題。

重點回顧

  • 確認 Ubuntu 版本與準備工作
    安裝 PHP 前,須確認作業系統版本與升級套件。
  • 兩種 PHP 安裝方式
    可從官方軟體庫直接安裝,也能透過 PPA 選擇特定版本。
  • 安裝後進行運作確認
    php -vphpinfo() 檢查 CLI 與網頁運作。
  • 活用常用模組擴充功能
    根據需求安裝 php-mbstringphp-mysql 等常用模組。
  • 支援多版本切換
    利用 update-alternatives 與 Apache 模組切換靈活操作。
  • 正確整合 Apache / Nginx
    依所用伺服器調整設定,是穩定運作關鍵。
  • 遇到問題查詢日誌
    若出現無法顯示或功能異常,請優先查詢錯誤日誌。

進階學習推薦

成功安裝 PHP 後,建議進一步學習:

  • MySQL(MariaDB)安裝與資料庫連線
  • WordPress 的安裝與架設
  • Laravel 等 PHP 框架安裝
  • HTTPS 支援(Let’s Encrypt SSL 憑證設定)
  • 自動啟動與服務管理(善用 systemd)

靈活運用這些技術,就能打造更完整的網站服務。Ubuntu 與 PHP 是打造高穩定、高彈性開發環境的絕佳組合,歡迎活用本教學持續提升技能!

10. 常見問題(FAQ)

整理安裝與設定 Ubuntu PHP 時常被搜尋的問題,並用淺顯易懂的方式回答:

Q1. 要怎麼在 Ubuntu 安裝最新版 PHP?

A1.
官方軟體庫不一定有最新版本。想用新版本,請先加入可信賴的 ondrej/php PPA,再安裝指定版本:

sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.2

Q2. 如何在 CLI 切換已安裝的 PHP 版本?

A2.
安裝多個版本後,可用 update-alternatives 切換:

sudo update-alternatives --config php

選擇欲切換版本的編號即可。

Q3. Apache 開啟 PHP 檔案時顯示原始碼怎麼辦?

A3.
表示 Apache 沒有正確處理 PHP。請確認 libapache2-mod-php 模組已啟用並重啟服務:

sudo apt install libapache2-mod-php
sudo systemctl restart apache2

Q4. PHP 設定檔(php.ini)在哪裡?

A4.
CLI 與 Web 伺服器用路徑不同,常見如下:

  • Apache 用:/etc/php/8.2/apache2/php.ini
  • CLI 用:/etc/php/8.2/cli/php.ini

依 PHP 版本調整路徑。

Q5. 如何啟用 PHP 擴充模組?

A5.
安裝後可用 phpenmod 指令啟用:

sudo phpenmod mbstring
sudo systemctl restart apache2

啟用後請記得重啟 Web 伺服器。

Q6. Nginx 運作 PHP 時需要注意哪些設定?

A6.
Nginx 必須用 php-fpm 執行 PHP,請確認設定檔中的 fastcgi_pass 是否正確:

location ~ .php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}

請依 PHP 版本調整 .sock 路徑。

Q7. PHP 錯誤訊息沒有顯示,該如何設定?

A7.
預設 php.inidisplay_errors = Off。開發時可暫時改成:

display_errors = On
error_reporting = E_ALL

設定後需重啟 Web 伺服器。

以上為 Ubuntu PHP 安裝與設定常見問答,掌握這些重點可助你有效排除問題。