PHPのバージョンアップ
ワードプレスの管理画面でPHPのバージョンを上げるようにとの警告が出ることがある。
raspbianをupgradeすればPHPのバージョンも最新のものになるだろうくらいの事を考えていたのだが、いざやってみると現在使っているStrechではphp7.0のままで枝番が多少上がる程度でワードプレスが要求する7.4にはとてもならない。
raspbianもBusterにすると7.3にはなるようである。
そこで以前トライしたことのあるraspbianのバージョンをStrechからBusterに上げようとしてみた。
SDカード全体のバックアップをWin32DiskImagerで取りそれから別のSDcardに書き出したもので試してみた。
しかし、raspbianそのもののBusterへのアップは成功したが、SSLを使っているせいかApache2が立ち上がらない。
SSLの設定に絡むようであるが現サーバーのSSL化をどのようにしたのか全く覚えておらず、これを解読するには相当時間が掛かりそうである。
そこで別の方法としてStrechのままでPHPを上げてみることとした。
raspbianでは通常のupdate upgradeでは最新バージョンにならないので外部リポジトリ情報を追加することでやってみた。しかし、これはraspbianのStrechでは確認が取れていないようで何回か警告が出たがワードプレスが要求しているので無理やりインストールすることとなった。状況は以下の通りであるが、一応成功してワードプレスの警告は出なくなるとともに応答も早くなったような気がする。
概要は以下の通りである。
◎Strech編
〇外部リポジトリ情報追加
packages.sury.org/php の GPG 公開鍵を登録する。
$ sudo wget -O - https://packages.sury.org/php/apt.gpg | apt-key add -
packages.sury.org/php のリポジトリ情報を追加し、パッケージ・リストの更新を行う。
# echo "deb https://packages.sury.org/php/ stretch main" >> /etc/apt/sources.list.d/php.list
という情報であったが私の場合php.listなるファイルが無かったので
$ sudo vi /etc/apt/sources.list.d/php.list
で先頭行に deb https://packages.sury.org/php/ stretch main を書き込み保存した。
$ sudo apt-get update
で更新し、PHPの情報を確認する。
〇 外部リポジトリからのPHPインストール情報の確認
PHPの外部リポジトリからインストールできる、PHPパッケージの版数情報を確認する。
pi@raspberrypi:~ $ sudo apt-cache policy php
php:
インストールされているバージョン: 1:7.0+49
候補: 2:7.4+79+0~20201210.30+debian9~1.gbpedaf15
バージョンテーブル:
2:7.4+79+0~20201210.30+debian9~1.gbpedaf15 500
500 https://packages.sury.org/php stretch/main armhf Packages
*** 1:7.0+49 500
500 http://raspbian.raspberrypi.org/raspbian stretch/main armhf Packages
100 /var/lib/dpkg/status
で7.4がインストール出来そうであることが分かる。そこで
sudo apt-get install php
警告: 以下のパッケージは認証されていません!
php-common php7.4-common php7.4-json php7.4-opcache php7.4-readline
libargon2-1 libpcre2-8-0 libsodium23 php7.4-cli libapache2-mod-php7.4 php7.4
php
検証なしにこれらのパッケージをインストールしますか? [y/N] y
警告が出るが構わず続行する。
終了後
$ php -v
で確認すると7.4がインストールされていることが分かる。次はapach2の設定である。
〇アパッチでの設定
現在使っている7.0を外して7.4を組み入れる。
$ sudo a2dismod php7.0
$ sudo a2enmod php7.4
phpのバージョンが変わるのでそれに対応するphp-mysql拡張もインストールする。
sudo apt-get install php-mysql
警告: 以下のパッケージは認証されていません!
php7.4-mysql php-mysql
検証なしにこれらのパッケージをインストールしますか? [y/N] y
構わずインストールする。
最後にapache2の再スタートをすることで変更が有効となる。
$ sudo /etc/init.d/apache2 restart
これでワードプレスの管理画面を見てみると警告が消えており無事バージョンアップ出来ているようである。
〇apache2のモジュール組み込み状況
7.0の時はphp7.0用のファイルが二個ある。
pi@raspberrypi:~ $ ls /etc/apache2/mods-enabled/
access_compat.load autoindex.load mime.conf rewrite.load
alias.conf dav.load mime.load setenvif.conf
alias.load dav_fs.conf mpm_prefork.conf setenvif.load
auth_basic.load dav_fs.load mpm_prefork.load socache_shmcb.load
authn_core.load deflate.conf negotiation.conf ssl.conf
authn_file.load deflate.load negotiation.load ssl.load
authz_core.load dir.conf php7.0.conf status.conf
authz_host.load dir.load php7.0.load status.load
authz_user.load env.load reqtimeout.conf
autoindex.conf filter.load reqtimeout.load
これをa2dismod php7.0とすることでここでのphp関連ファイルが無くなり
a2enmod php7.4で新しいモジュールが追加される。
これは対apache2でのことでphp7.0関連のファイルは残っているので何時でも元に帰せる。
pi@raspberrypi:~ $ ls /etc/apache2/mods-enabled/
access_compat.load autoindex.load mime.conf rewrite.load
alias.conf dav.load mime.load setenvif.conf
alias.load dav_fs.conf mpm_prefork.conf setenvif.load
auth_basic.load dav_fs.load mpm_prefork.load socache_shmcb.load
authn_core.load deflate.conf negotiation.conf ssl.conf
authn_file.load deflate.load negotiation.load ssl.load
authz_core.load dir.conf php7.4.conf status.conf
authz_host.load dir.load php7.4.load status.load
authz_user.load env.load reqtimeout.conf
autoindex.conf filter.load reqtimeout.load
最後に今回は動画ファイルを登録するために行った変更なのでphpが制限しているアップロードファイルのサイズを以下の内容で書き換えた。
/etc/php/7.4/apache2/php.ini
memory_limit = 350M
post_max_size = 310M
upload_max_filesize = 300M
以上でワードプレス対応の修正は終了である。
◎Buster編
以上の内容はStrchに関してであり、Busterについては少し事情が違っていた。
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ buster main" | sudo tee /etc/apt/sources.list.d/php.list
sudo apt update
これでphp7.4が候補になった
pi@raspberrypi:~ $ sudo apt policy php
php:
インストールされているバージョン: 2:7.3+69
候補: 2:7.4+79+0~20201210.30+debian10~1.gbpedaf15
バージョンテーブル:
2:7.4+79+0~20201210.30+debian10~1.gbpedaf15 500
500 https://packages.sury.org/php buster/main armhf Packages
*** 2:7.3+69 500
500 http://raspbian.raspberrypi.org/raspbian buster/main armhf Packages
100 /var/lib/dpkg/status
後はStrechと同様sudo apt-get install php7.4 でインストールしapache2の設定、php-mysqlのインストール、最後にapache2のリスタートで7.4が使えるようになる。