Raspberry Pi (aarch64 bullseye) 安裝 PHP 8.1 並設定 symbolic link

自從上次把樹梅派升級成 64 位元以後,有很多現有資源都無法使用。明明是時代潮流的 64 位元啊!這次碰到的問題則是目前吃飯工具的 PHP 在預設來源中只有 7.4,再往上就沒有了。

當然大家通常都會自己去找另外一個常見的來源:ppa:ondrej/php,不過這次居然沒用了。原先想說就乾脆用容器跑吧,跑了成功了,可是想想還是想再找找其他方式,不然每次執行指令都要跑那一串 docker 指令也是很麻煩。最後偶然之間找到一個網站,才知道原來是我自己誤會了。日後也不知道會不用再用到,先寫下這篇筆記做紀錄。

安裝

首先以往都是用 ppa:ondrej/php,但看了參考資料中網站的的連結才發現,原來這個套件庫來源是給 Ubuntu 用的,而 Raspberry Pi OS 基底都是 Debian,所以用 packages.sury.org/php 才對。以前我都認為大家都系出同源不用太在意,沒想到在一些時候還是要分清楚才行。

如果不想看英文,可以直接複製貼上(注意!網站上說只限 armv7 或以上,此外來源中版本代號是 Debian 11 的 bullseye):

1
2
3
4
sudo apt install ca-certificates apt-transport-https
wget -q https://packages.sury.org/php/apt.gpg -O- | sudo tee /etc/apt/trusted.gpg.d/php.gpg
echo "deb https://packages.sury.org/php/ bullseye main" | sudo tee /etc/apt/sources.list.d/php.list
sudo apt update

然後就是安裝你要的 PHP 版本以及擴充套件了,例如已安裝給 Laravel 為例(用 Laravel 8 + PHP 7.4 改造而來):

1
sudo apt install php8.1 php8.1-common php8.1-cli php8.1-bcmath php8.1-fpm php8.1-mbstring php8.1-xml php8.1-curl php8.1-gd php8.1-mysql php8.1-pgsql php8.1-sqlite3 php8.1-zip php8.1-readline php8.1-opcache

PHP8.1 安裝完成

切換預設版本

另外加碼一下,如果有安裝多個 PHP 版本的話,想確保每次打 php 都是自己最常用版本的話,可以使用下列指令:

1
sudo update-alternatives --config php

使用 config 旗標的話會進入互動模式

當然如果你已經知道要切換的指令位置在哪,或是不想使用互動模式的話,也可以用 --set 參數:

1
sudo update-alternatives --set php /usr/bin/php8.1

如果想查看目前連結的是哪個的話:

1
sudo update-alternatives --display php

參考資料