kazu22002の技術覚書

PHPer, Golang, AWS エンジニアの日々

UbuntuでPHP7.4 -> PHP8.0へのアップデート

UbuntuでPHP7.4 からPHP8.0にアップデートした際のコマンドの記録です。

webサーバーを動かしている環境でnginx, php-fpmを使用しています。laravelを使用しているため、必要なモジュールもインストールしています。

PHP8.0インストール

apt update
apt install software-properties-common
add-apt-repository ppa:ondrej/php
apt install php8.0
apt install -y php8.0-curl php8.0-gd php8.0-dev php8.0-zip php8.0-mbstring php8.0-mysql php8.0-xml
apt install php8.0-fpm

残りはnginxのphp-fpmの切り替えと必要なサービスのみを起動するようにsystemctlでdisableをして作業完了。あとはnginx, php-fpmを再起動してweb表示が表示できれば完了です。

PHP8.1, PHP8.2

apt install php8.1
apt install -y php8.1-curl  php8.1-gd php8.1-dev php8.1-zip php8.1-mbstring php8.1-mysql php8.1-xml
apt install php8.1-fpm
apt install php8.2
apt install -y php8.2-curl  php8.2-gd php8.2-dev php8.2-zip php8.2-mbstring php8.2-mysql php8.2-xml
apt install php8.2-fpm

PHPの切り替え

複数のPHPがインストールされている状態になります。ダウングレードしたい場合のためにPHPの切り替え方法も記載します。

update-alternatives --list php
sudo update-alternatives --config php

アップデー時のエラー

PHP8.0からPHP8.1にアップデートした際のエラー

  • SJIScsvを判定できなくなっていた

SJIS-win削除

csvSJISを判別するためにmb_detect_encodingを使用していたが、判別できなくなっていました。

CP932を使っても判断できなかったため、mb_detect_encodingでの判別を諦めて規定文字が判断できなかったらCP932に変換する処理に変更しました。

参考

How to Upgrade PHP Version to PHP 8.0 on Ubuntu - Cloudbooklet