このサイトは、只今WEB業界で活躍中のデザイナー、プログラマーの方々の情報を集めたweb統合情報サイトです。

Archives Details

php 7.4にアップデート

PHP

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_fcgiProxyPassMatch 指令を使用している場合、これが新しい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のバージョンアップは時間の余裕があるときに行ったほうが安全ではありますね。

ではではぁ。

 

Comment

Related Article

php 7.4にアップデート

2023.12.24

Laravel 4 を PHP 7 環境へ移行したお話。

2018.06.10

PHP 簡易アクセスログ 出力

2016.04.29

Laravelを 別環境に移動したら画面が真っ白に。MacにComposer、php mcrypt 等をインストールしたお話。

2015.10.10

遅れましたが..あけましておめでとうございます!2015年は Laravelで画像処理。からということで。

2015.01.08

IDE phpstorm, IntelliJ IDEAの Database接続が便利すぎる件(Vagrant + IntelliJ IDEA でMySQL操作)

2014.11.29

Laravel4でもSmartyを使用したい!

2014.11.20

人気急上昇!PHPフレームワーク「Laravel」を使ってみました。簡易会員サイト作成編

2014.09.24

Laravel4 パーミッションエラー Vagrant パーミッションが変更しない件

2014.08.24

【CentOS6】 PHP5.3からPHP5.5にバージョンアップしました

2014.08.11

CATEGORY LIST

LATEST NEWS

M1 Macで、OpenGL GLUTを使ってコンパイルする

C

2024.04.27

Rust - Actix Web mongo ユーザー登録 JWT認証

Rust

2024.03.24

Rust - Actix Web JWT 認証認可 APIの作成

Rust

2024.02.25

Rust - Actix Web × JSON 静的ファイルをAPIで返却

Rust

2024.01.19

Rust - Actix Web × MongoDB環境をサクッと起動

Rust

2024.01.18

5分で学ぶ RustでWave Function Collapse (波動関数崩壊アルゴリズム)

Rust

2024.01.15

LLaMAモデル GGMLフォーマット(llama.cpp)をRustフレームワーク Leptosを用いて M1MacMiniでサクッと動かす。

Rust

2024.01.11

2024年 狙っているモバイルノートPC

tool

2024.01.07

MacOS XcodeにSDL2を追加

tool

2023.12.26

php 7.4にアップデート

PHP

2023.12.24

5分で覚える Flutter Flameで作る Wave Function Collapse - 波動関数崩壊アルゴリズム

AI・Bot・algorithm

2023.12.20

Flutter - Flameでゲーム作成 (キャラクターの移動)

Flutter

2023.07.23

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

WEBデザイナーの、WEBデザイナーによる、WEBデザイナーの為のサイト。「みんなで書こう!」と仲間を募ってみたが、結局書くのは自分だけとなってしまいました。日々のメモを綴っていきます。

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

MAD CITY 北九州市で生まれ育つ。20代はバンド活動に明け暮れ、ふと「webデザイナーになりたい。」と思い、デジタルハリウッド福岡校入学。卒業後、数々の賞を受賞、web業界をざわつかせる。
現在、主に、ゲーム制作中心に港区六本木界隈で活動中。

FOLLOW US