0
0

More than 1 year has passed since last update.

Raspberry Pi 3+の設定(忘備録)その6 PHPとphpMyAdminのアップデート

Posted at

自分がやった作業のメモです。形にしておかないと忘れてしまうので書いたついでに記事にしました。
なんとなくの試行錯誤でやってるのでお手柔らかにお願いします。間違い等ありましたらご指摘ください。

前提と目標

Raspberry Pi OSにはPHP 7.3.29、phpMyAdmin 4.9.7がインストール済み。目指すはPHP 8.2のインストールとpmaのバージョンアップです。

事前準備

インストール済みのphpMyAdminのパスワードを思い出してください。mysqlのユーザーphpmyadminのパスワードです。(もしかしたらいらないのかもしれませんが。。。)

OSまわりのアップデート

参考url

パッケージを更新、インストール済パッケージを更新、ディストリビュージョンを更新、カーネルをバージョンアップ、不要なファイルとアーカイブの削除、最後に再起動。
個人的にはふたつめのインストール済パッケージの更新が一番時間がかかりました。

$ sudo apt update
$ sudo apt -y upgrade
$ sudo apt dist-upgrade -y
$ sudo rpi-update
$ sudo apt autoremove -y
$ sudo apt autoclean
#再起動
$ sudo reboot

既存のPHP7.3の削除とPHP8.2のインストール

ラズパイのパッケージに含まれているPHPのバージョンが7.3なので、8.2にバージョンを上げたいと思います。この作業をするには、一度PHP7.3を削除して、8.2を入れなおす必要があります。当然のことながら編集済みのphp.iniは無くなります。編集した場所を忘れないようにしてください。
参考url

PHPのバージョン確認。この時点ではPHP 7.3.31でした

$ php -v
PHP 7.3.31-1~deb10u3 (cli) (built: Feb 26 2023 13:00:55) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.31, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.31-1~deb10u3, Copyright (c) 1999-2018, by Zend Technologies

PHP7.3を削除します。

$ sudo apt purge php7.*
$ sudo apt autoclean
$ sudo apt autoremove

途中で「phpmyadmin 用のデータベースの設定除去を dbconfig-common で行いますか?」と聞かれますが「いいえ」にします。
スクリーンショット (33).png

この時点でインストールされるPHPのバージョンをチェックします。apt updateしましたが、先ほど更新したので最新です。

$ sudo apt update
$ sudo apt depends php
php
  依存: php7.3

この時点では7.3がインストールされます。

PHP8.2がインストールされるようにします。

$ sudo wget -qO /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
$ echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list

もう一度パッケージを更新してから、インストールするPHPのバージョンをチェックします。

$ sudo apt update
$ sudo apt depends php
php
  依存: php8.2

これで8.2を入れることができます。PHPと関連モジュールを入れます。

$ sudo apt install php -y
$ sudo apt install php-bcmath php-mbstring php-xml php-mysql php-curl php-zip -y

インストール後のバージョン確認

$ php -v
PHP 8.2.4 (cli) (built: Mar 16 2023 14:35:29) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.4, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.4, Copyright (c), by Zend Technologies

phpを修正します。修正前ファイルをコピーして残しておきます。

$ cd /etc/php/8.2/apache2
$ sudo cp php.ini php.ini.old

php.ini内のDynamic Extensionsの下にある「extension=mbstring」のコメントを外して上書き保存します。

- ;extension=mbstring
+ extension=mbstring

phpinfoがソースコードで見えてしまう

phpinfo()をブラウザで見るとソースコードで見えてしまいました。
スクリーンショット (35).png
apache2の入れ直しなどで解消します。
参考url

apacheを入れなおしてみます。

$ sudo apt purge apache2
$ sudo apt install apache2

モジュールを有効化しようとすると怒られました。

$ sudo a2enmod php8.2
Considering dependency mpm_prefork for php8.2:
Considering conflict mpm_event for mpm_prefork:
ERROR: Module mpm_event is enabled - cannot proceed due to conflicts. It needs to be disabled first!
Considering conflict mpm_worker for mpm_prefork:
ERROR: Could not enable dependency mpm_prefork for php8.2, aborting

mpm_eventを無効化→有効化してからphp8.2を有効化してサービスの再起動をします。

$ sudo a2dismod mpm_event
$ sudo a2enmod mpm_prefork
$ sudo apt install libapache2-mod-php8.2
$ sudo a2enmod php8.2
$ sudo a2enmod headers
#サービス再起動
$sudo systemctl restart apache2

phpinfoが表示されました。
スクリーンショット (36).png

その他、セキュリティ対策は以前の記事「Raspberry Pi 3+の設定(忘備録)その3 新規ユーザー作成・PHPのインストール」を参考に行って下さい。

phpMyAdmin入れ直し

現在の安定版である5.2.0を入れてみようかと思います。
これは以前の記事「Raspberry Pi 3+の設定(忘備録)その5 phpMyAdminインストール」を参考に入れます。

#サービスを止める
$ sudo /etc/init.d/apache2 stop
$ sudo systemctl stop mariadb.service

#旧環境のバックアップ
$ cd /usr/share
$ sudo rm -r phpmyadmin.old/
$ sudo mv phpmyadmin phpmyadmin.old

#パッケージダウンロード
$ sudo wget https://files.phpmyadmin.net/phpMyAdmin/5.2.0/phpMyAdmin-5.2.0-all-languages.zip
$ sudo unzip phpMyAdmin-5.2.0-all-languages.zip
$ sudo mv phpMyAdmin-5.2.0-all-languages phpmyadmin
$ sudo rm phpMyAdmin-5.2.0-all-languages.zip

#インストール(インストール中、mysqlが起動していないと途中でエラーになります)
$ sudo /etc/init.d/apache2 restart
$ sudo systemctl start mariadb.service
$ sudo apt install phpmyadmin

インストール中、使用するwebサーバを聞かれるので「apache2」を選択。
スクリーンショット (37).png

phpmyadmin 用のデータベースを dbconfig-common で設定しますか?と聞かれるので「はい」を選択。
スクリーンショット (38).png

phpmyadminのパスワードを聞かれるので、事前準備で思い出したphpmyadminのパスワードを入力してください。(もしかしたら前回と違ってもいいのかもしれないんですが未検証です。同じなら無難かな、と。すいません。)
スクリーンショット (39).png

インストール終了後、/etc/apache2/apache2.confに1行追記します。

/etc/apache2/apache2.conf
#ファイル末尾に追記
Include /etc/phpmyadmin/apache.conf
#サービス再起動
$ sudo /etc/init.d/apache2 restart
$ sudo systemctl start mariadb.service

これでpmaの画面が出るはず!!!!!が、出ない。エラーです。

phpMyAdminがエラーを吐く

apacheのログファイルには何も出ていないのですが、php.iniのdisplay_errorをonにしてみたところ、ブラウザ上でエラーメッセージが表示されました。

Fatal error: Array and string offset access syntax with curly braces is no longer supported in /usr/share/phpmyadmin/libraries/url_generating.lib.php on line 231

ええええぇぇぇぇぇ・・・。

ダメもとでphpMyAdminのほかのバージョンを使ってみる

とりあえず5.2.1のバージョンを落として入れてみます。手順は先述の「phpMyAdmin入れ直し」のとおり。バージョン番号だけ5.2.1に読み替えて実行してください。
sudo apt install phpmyadminを実行すると、前回のようなwebサーバの確認やdbconfig-commonの確認画面は出てきませんでした。
スクリーンショット (40).png
・・・入りました。ログインして一通り触ってみた感じなんとなく大丈夫そうです。
というわけで、作業が終わりました。今回この作業をするにあたり、へっぽこなので何回もsdカードにイメージファイルを書き戻ししてます。皆さんはすんなりうまくいきますように。では。

関連ページ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0