自分がやった作業のメモです。形にしておかないと忘れてしまうので書いたついでに記事にしました。
なんとなくの試行錯誤でやってるのでお手柔らかにお願いします。間違い等ありましたらご指摘ください。
前提と目標
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 で行いますか?」と聞かれますが「いいえ」にします。
この時点でインストールされる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()をブラウザで見るとソースコードで見えてしまいました。
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
その他、セキュリティ対策は以前の記事「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」を選択。
phpmyadmin 用のデータベースを dbconfig-common で設定しますか?と聞かれるので「はい」を選択。
phpmyadminのパスワードを聞かれるので、事前準備で思い出したphpmyadminのパスワードを入力してください。(もしかしたら前回と違ってもいいのかもしれないんですが未検証です。同じなら無難かな、と。すいません。)
インストール終了後、/etc/apache2/apache2.confに1行追記します。
#ファイル末尾に追記
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の確認画面は出てきませんでした。
・・・入りました。ログインして一通り触ってみた感じなんとなく大丈夫そうです。
というわけで、作業が終わりました。今回この作業をするにあたり、へっぽこなので何回もsdカードにイメージファイルを書き戻ししてます。皆さんはすんなりうまくいきますように。では。
関連ページ