php 7.4にアップデート
2023.12.24
この記事は最終更新日から1年以上が経過しています。
どもです。
毎年年末になってやっと、WordPressの設定諸々を調整している気がする。
今回は、PHPのバージョンアップに関してになります。
Red Hat系のLinuxディストリビューション(Red Hat Enterprise Linux、CentOSなど)で、既存のPHPパッケージを yum からインストールした状態から、Remiリポジトリを通じてPHP 7.4にアップグレードする方法となります。
注意事項
- これらの手順を実行する前に、システムのバックアップを取ることを強くお勧めします。
- 特にウェブサーバー環境(例えばApacheやNginx)でPHPを使用している場合は、PHPのアップグレードがウェブサイトやアプリケーションに影響を与える可能性があります。アップグレード前に適切なテストを行ってください。
- CentOSのバージョンによっては、手順に若干の違いがある場合があります。上記の手順は一般的なガイドラインであり、特定のシステム環境に合わせて調整する必要があるかもしれません。
php 7.4にアップデート
既存のPHPのアンインストール
既存のPHPをアンインストールする必要があります。これを行うには、以下のコマンドを実行。
sudo yum remove php*
はい。これで綺麗さっぱりphp関係が削除されるということで、こわいですよね。
動いているサービスもPHPがなくなることによって動かなくなるので気をつけてください。
nginxをリスタートしなければ良いだろうなんて少し浅はかな事思っていましたが、そんなこともなくウェブ帳自身も表示しなくなりました。
Remiリポジトリの追加
Remiリポジトリをシステムに追加します。これには、まずEPELリポジトリをインストールし、次にRemiリポジトリを追加します。
1.EPELリポジトリのインストール
sudo yum install epel-release
2. Remiリポジトリの追加
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm # CentOS 7の場合 # CentOS 8の場合は、remi-release-8.rpm を使用
PHP 7.4の有効化
PHP 7.4を利用するために、RemiリポジトリからPHP 7.4を有効にします。
sudo yum-config-manager --enable remi-php74
PHP 7.4のインストール
PHP 7.4をインストールします。
sudo yum install php php-cli php-fpm php-mysqlnd
このコマンドでは、基本的なPHPパッケージとCLI、FPM、MySQLのサポートをインストールしています。プロジェクトに必要な他のPHP拡張モジュールがあれば、同様の方法で追加してください。
PHPのバージョン確認
インストール後、PHPのバージョンを確認します。
php -v
これでPHP 7.4がシステムにインストールされ、利用可能になります。
と、これでバージョンも上がり完了。と思いきや、
PHP 7.1.0 (cli)
変わっていないー。そんな人にもここからは、トラブルシュートになります。
トラブルシューティング
php -v コマンドでPHPのバージョンが期待通りに切り替わっていない場合いくつかの原因と対処法が考えられます。
パスの確認
- 現在のシステムにインストールされているPHPのバージョンを確認します。異なるPHPバージョンが複数インストールされている可能性があります。
whereis php
環境変数の確認
php
コマンドが参照しているパスを確認します。これは、インストールされているPHPバージョンが異なる場所にある可能性があるためです。
echo $PATH
正しいPHPバージョンがパスに含まれているか確認します。必要に応じてパスを修正します。
アルタナティブの確認
- CentOSやRHELでは、
alternatives
システムを使用して異なるバージョンのプログラムを管理できます。PHPのアルタナティブを確認してください。
sudo alternatives --config php
ここから、適切なPHPバージョンを選択できます。
サーバーの再起動
- PHPのバージョンをアップグレードした後、ウェブサーバー(Apache, Nginxなど)を再起動する必要があります。
sudo systemctl restart httpd # Apacheの場合 sudo systemctl restart nginx # Nginxの場合
システムの再起動
- まれに、全体のシステムを再起動する必要がある場合があります。これは、特に新しいバージョンのPHPがシステムレベルで認識されていない場合に役立ちます。
インストールの確認
- Remiリポジトリから正しいPHPバージョンをインストールしたことを再確認します。
sudo yum list installed | grep php
といったところで、いかがでしょうか。正しくバージョンは変更されたでしょうか。
自分は、複数のバージョンが含まれていました。なので、正しいバージョンを使えるように修正。
複数のバージョンが存在する場合
各PHPバージョンの確認
まず、それぞれのパスにあるPHPのバージョンを確認します。これにより、どのPHPバージョンがどこにインストールされているかを特定できます。
/usr/bin/php -v /usr/local/bin/php -v
正しいPHPバージョンの選択
RemiリポジトリからインストールしたPHP 7.4がどのパスにあるかを特定します。通常、これは /usr/bin/php
または /usr/local/bin/php
のいずれかになる可能性が高いです。
PATHの更新
システムが正しいPHPバージョンを使用するように、PATH環境変数を更新します。これは、.bashrc
や .bash_profile
などのシェルの設定ファイルを編集して行います。
例えば、/usr/local/bin/php
がPHP 7.4の場合、以下のようにPATHを更新します。
export PATH=/usr/local/bin:$PATH
このコマンドをユーザーの .bashrc または .bash_profile に追加し、ファイルを保存してから、新しいターミナルセッションを開いて変更を反映させます。
システム全体の設定
システム全体で特定のPHPバージョンを使用するように設定するには、alternatives
システムを使用する方法もあります。
sudo alternatives --set php /usr/local/bin/php
再確認
変更後、再度 php -v
を実行して、PHPのバージョンが正しく反映されているかを確認します。
/usr/bin/phpが、PHP 7.4の例
実際には、/usr/local/bin/phpには、PHP 7.1.0、/usr/bin/phpにはPHP 7.4.33が入っていた状態になっていました。このような場合でPHP 7.4.33をデフォルトに設定する例として。
1.PATHの更新: システムが /usr/bin/php を優先的に使用するように、PATH環境変数を更新します。これを行うには、.bashrc または .bash_profile ファイルを編集し、次の行を追加または更新します。
export PATH=/usr/bin:$PATH
2.alternativesの設定: alternatives システムを使用して、/usr/bin/php をデフォルトのPHP実行可能ファイルとして設定します。
sudo alternatives --set php /usr/bin/php
3.再確認: 変更後、php -v を実行して、PHP 7.4.33がデフォルトのPHPバージョンとして正しく設定されたことを確認します。
これで、phpのバージョンは切り替わりましたが、502 Bad Gatewayとなってしまう現象に。。。
WordPressが正しく表示しない時のトラブルシュート
「502 Bad Gateway」エラーは、通常、ウェブサーバーとPHPプロセスマネージャー(PHP-FPM)間の通信に問題がある場合に発生します。PHPのバージョンをアップグレードした後にこのエラーが発生するのは一般的で、いくつかの可能性が考えられます。
PHP-FPMの状態を確認
最初にPHP-FPMが正常に動作しているかを確認します。
sudo systemctl status php-fpm
または、PHP 7.4用のサービスがある場合(例:php74-php-fpm):
sudo systemctl status php74-php-fpm
その他のコマンド
インストールされているPHP-FPMの確認
sudo yum list installed | grep php-fpm
Remiリポジトリを使用している場合
sudo yum install php-fpm
サービス名の確認
sudo systemctl list-units | grep php-fpm
PHP-FPMの再起動
問題がある場合、PHP-FPMを再起動してみます。
sudo systemctl restart php-fpm
または、特定のバージョン用:
sudo systemctl restart php74-php-fpm
その他のコマンド
PHP-FPMサービスの有効化と起動
sudo systemctl enable php74-php-fpm sudo systemctl start php74-php-fpm または、 sudo systemctl enable php-fpm sudo systemctl start php-fpm
サービスのステータス確認。サービスが正しく起動しているか確認
sudo systemctl status php74-php-fpm
ウェブサーバーの設定を確認
ウェブサーバー(例:Nginx、Apache)の設定を確認して、PHP-FPMとの接続設定が正しいことを確認します。特に、以下のポイントを確認してください:
- Nginxの場合:
fastcgi_pass
指令がPHP-FPMのソケットファイルまたはTCPポートを正しく指しているか確認します。- 設定例:
nginxCopy code location ~ \.php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # その他の設定... }
- Apacheの場合:
mod_proxy_fcgi
とProxyPassMatch
指令を使用している場合、これが新しいPHP-FPMのポートまたはソケットに合わせて更新されているか確認します。
ウェブサーバーの再起動
ウェブサーバーの設定を変更した後、ウェブサーバーを再起動します。
sudo systemctl restart nginx # Nginxの場合 sudo systemctl restart httpd # Apacheの場合
エラーログの確認
問題が解決しない場合は、NginxまたはApache、そしてPHP-FPMのエラーログを確認します。これらのログには、問題の原因に関する手がかりが含まれている可能性があります。
sudo tail -f /var/log/nginx/error.log # Nginxの場合 sudo tail -f /var/log/httpd/error.log # Apacheの場合 sudo tail -f /var/log/php-fpm/error.log # PHP-FPMの場合
と。このあたりを行えばWordpressも表示するようになります。
しかしながら、ページによってはまだ不具合がある場合。wordpressのサイトヘルスの情報を参考に対応していく。
サイトヘルスチェック
サイトヘルスを確認すると、以下の様な警告が出ており、ページが正しく表示しなかったり不具合が生じていたりとする場合。
オプションのモジュール dom がインストールされていないか、無効化されています。 警告 オプションのモジュール imagick がインストールされていないか、無効化されています。 警告 オプションのモジュール mbstring がインストールされていないか、無効化されています。
WordPress または他の PHP ベースのアプリケーションを使用する際に、特定の PHP 拡張モジュールが必要となってくるので、エラーメッセージに基づいて、必要なモジュールをインストールしていきましょう。
必要なモジュールのインストール
● DOM, Imagick, mbstring, zip, gd, intl モジュールのインストール
sudo yum install php-dom php-imagick php-mbstring php-zip php-gd php-intl
これらのコマンドは、それぞれのPHP拡張モジュールをインストールします。
imagick モジュールについては、以下のコマンドを実行します。
sudo yum install php-pecl-imagick
● PHP-FPMの再起動
モジュールをインストールした後、PHP-FPMを再起動して、変更を有効にします。
sudo systemctl restart php-fpm
もし php74-php-fpm サービスを使用している場合は、以下のコマンドを実行します。
sudo systemctl restart php74-php-fpm
● 確認
インストール後、PHPの設定を確認して、新しいモジュールが有効になっているかを確認します。
php -m
このコマンドは、有効なPHPモジュールのリストを表示します。
imagick モジュールに関しては、これ単体では動いていなかったので ImageMagickコアモジュールの追加を行います。
ImageMagick および PHP Imagick モジュールのインストール
ImageMagick のインストール: ImageMagick は、imagick PHP 拡張モジュールの基盤となるライブラリです。まずこれをインストールします。
sudo yum install ImageMagick ImageMagick-devel
PHP Imagick モジュールのインストール: 次に、PHP の imagick 拡張モジュールをインストールします。
sudo yum install php-pecl-imagick
このコマンドは、PECL リポジトリを通じて imagick モジュールをインストールします。もし Remi リポジトリを使っている場合は、PHP のバージョンに応じて適切なパッケージ名になっていることを確認してください(例: php74-php-pecl-imagick)。
PHP-FPM の再起動
モジュールをインストールした後、PHP-FPM サービスを再起動して新しい設定を適用します。
sudo systemctl restart php-fpm
モジュールの確認
変更を適用した後、php -m
コマンドを使って、imagick モジュールが有効になっているか確認します。
php -m | grep imagick
といった感じで、wordpressのサイト表示、サイトヘルスの方も問題なく通過となり無事PHPのバージョンアップを行えました。
最初に、既存のPHPをエイヤーでサクッと削除したことによって、表示しなくなったり、不具合でてたりと色々バタバタしちゃいました。
次回からは、削除する手順が必要なく、Remiリポジトリの有効無効切り替えだけで行けそうな様子なので楽に更新できると信じております。
しかしながら、PHPのバージョンアップは時間の余裕があるときに行ったほうが安全ではありますね。
ではではぁ。