# PHP 8.1 から 8.4 へアップグレード
Ubuntu で PHP 8.1 から 8.4 へアップグレードする手順を説明します。
ondrej/php PPA について
Ubuntu 公式リポジトリには最新の PHP バージョンが含まれていないため、ondrej/php PPA(Personal Package Archive)を利用します。これは Ubuntu 向けの非公式 PHP リポジトリで、最新の PHP バージョンを提供しています。
# アップグレード手順
# 1. リポジトリの追加
まず、ondrej/php PPA を追加します。
apt update
apt install -y software-properties-common
add-apt-repository -y ppa:ondrej/php
apt update
# 2. PHP 8.4 のインストール
必要な PHP パッケージをインストールします。使用している拡張機能に応じてパッケージを選択してください。
apt install -y php8.4 php8.4-cli php8.4-fpm php8.4-mbstring php8.4-xml php8.4-curl php8.4-zip php8.4-mysql
# 3. PHP バージョンの切り替え
CLI で使用する PHP バージョンを切り替えます。
# 直接指定して切り替え
update-alternatives --set php /usr/bin/php8.4
# または対話形式で選択
update-alternatives --config php
# 4. バージョン確認
インストールと切り替えが完了したか確認します。
php -v
# php-fpm を使用している場合
Web サーバー(Nginx や Apache)で php-fpm を使用している場合は、追加の設定が必要です。
# php-fpm の切り替え
# 現在の php-fpm を停止
systemctl stop php8.1-fpm
# PHP 8.4 の php-fpm を起動
systemctl start php8.4-fpm
systemctl enable php8.4-fpm
# シンボリックリンクの更新
シンボリックリンクを使用している場合は、以下のように更新します。
# 実行ファイルのシンボリックリンク
ln -sf /usr/sbin/php8.4-fpm /usr/sbin/php-fpm
# ソケットファイルのシンボリックリンク
ln -sf /run/php/php8.4-fpm.sock /run/php/php-fpm.sock
# Nginx の設定確認
Nginx の fastcgi_pass 設定が正しいことを確認します。
fastcgi_pass unix:/run/php/php-fpm.sock;
設定変更後、Nginx をリロードします。
systemctl reload nginx
# 複数の PHP バージョンを管理する
複数の PHP バージョンをインストールして、必要に応じて切り替えることができます。
# インストール済みバージョンの確認
# インストール済みの PHP バージョンを確認
ls /usr/bin/php*
# update-alternatives で管理されているバージョンを確認
update-alternatives --query php
# バージョンの切り替え
対話形式でバージョンを選択できます。
update-alternatives --config php
実行すると、以下のような選択画面が表示されます。
alternative php (/usr/bin/php を提供) には 2 個の選択肢があります。
選択肢 パス 優先度 状態
------------------------------------------------------------
* 0 /usr/bin/php8.4 84 自動モード
1 /usr/bin/php8.1 81 手動モード
2 /usr/bin/php8.4 84 手動モード
現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください:
数字を入力して Enter を押すと、そのバージョンが有効になります。
# トラブルシューティング
# 古いバージョンに戻す場合
問題が発生した場合は、以前のバージョンに戻すことができます。
# PHP CLI のバージョンを切り替え
update-alternatives --set php /usr/bin/php8.1
# php-fpm を切り替え
systemctl stop php8.4-fpm
systemctl start php8.1-fpm
# 拡張機能が見つからない場合
PHP 8.4 用の拡張機能がインストールされていない可能性があります。必要な拡張機能をインストールしてください。
apt install -y php8.4-[拡張機能名]