CentOS 6 で PHP 5.3 から 7.3 へバージョンアップする手順。
7.3 以外をインストールしたい場合は、バージョンを指定している箇所の数字を変更すればOK。
# PHP のバージョン確認 $ php -v PHP 5.3.3 # OS の確認 $ cat /etc/issue CentOS release 6.10 (Final) # どのリポジトリからインストールしたか $ yum info php リポジトリー : installed 提供元リポジトリー : base # インストール可能なパッケージを確認 yum list | grep php # リポジトリを確認(以下のどちらかで確認) $ yum repolist all $ less /etc/yum.repos.d
remi リポジトリが存在するが、古いリポジトリのようで、PHP7系が無かったため、remi リポジトリをインストールし直すことにする。
既にリポジトリにインストールしたい PHP バージョンがあれば「3.PHP を入れ直す」の手順に進む。
# php.ini の場所 $ php -r "echo phpinfo();" | grep "php.ini" Loaded Configuration File => /etc/php.ini # 必要であれば php.ini をローカルにダウンロードしたり、バックアップを取っておく # インストール済みのパッケージ名確認 $ rpm -qa | grep epel epel-release-6-8.noarch $ rpm -qa | grep remi remi-release-6.5-1.el6.remi.noarch # アンインストールのテスト $ rpm -e --test epel-release-6-8.noarch エラー: 依存性の欠如: epel-release >= 6 は (インストール済み)remi-release-6.5-1.el6.remi.noarch に必要とされています epel-release >= 6 は (インストール済み)rpmfusion-free-release-6-4.noarch に必要とされ ています epel-release >= 6 は (インストール済み)rpmfusion-nonfree-release-6-4.noarch に必要とされています # 依存性のエラーが出た場合、そちらから先にアンインストールを行う # 依存性のエラーで表示されたパッケージのアンインストールテスト $ rpm -e --test remi-release-6.5-1.el6.remi.noarch $ rpm -e --test rpmfusion-free-release-6-4.noarch $ rpm -e --test rpmfusion-nonfree-release-6-4.noarch # アンインストール(依存先から順番に削除) $ sudo rpm -e rpmfusion-nonfree-release-6-4.noarch $ sudo rpm -e rpmfusion-free-release-6-4.noarch $ sudo rpm -e remi-release-6.5-1.el6.remi.noarch $ sudo rpm -e epel-release-6-8.noarch # リポジトリが削除されているのを確認 $ less /etc/yum.repos.d
以下のサイトで、最新の URL を確認する。
EPEL(CentOS 6 用に「EL6 epel-release」がある)
https://fedoraproject.org/wiki/EPEL/ja
Remi(Linux 6 用のパッケージ「remi-release-6.rpm」がある)
https://rpms.remirepo.net/
【2022.9.30追記】
以下の epel の URL は無効になってしまいました。
試せてないですが、こちらのサイトで紹介されている URL なら動くかもしれません。
https://dynamic-one.com/archives/51756838.html
# epel のインストール $ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm # remi のインストール $ sudo yum install http://ftp.riken.jp/Linux/remi/enterprise/remi-release-6.rpm # 登録したリポジトリを確認 $ less /etc/yum.repos.d # remi-php73.repo などが追加されている # 自動で使用しないようにする $ sudoedit /etc/yum.repos.d/epel.repo [epel] enabled=1 ↓ enabled=0
# インストールしたい PHP バージョンのパッケージ確認 $ yum list | grep php73 # インストールされるパッケージの確認 $ yum info --enablerepo=epel,remi-php73 php # インストール済みの PHP 5.3 パッケージを確認 $ yum list installed | grep php php.x86_64 5.3.3-49.el6 @base php-cli.x86_64 5.3.3-49.el6 @base php-common.x86_64 5.3.3-49.el6 @base php-devel.x86_64 5.3.3-49.el6 @base php-gd.x86_64 5.3.3-49.el6 @base php-mbstring.x86_64 5.3.3-49.el6 @base php-mysql.x86_64 5.3.3-49.el6 @base php-pdo.x86_64 5.3.3-49.el6 @base php-pear.noarch 1:1.9.4-5.el6 @base php-xml.x86_64 5.3.3-49.el6 @base # php 5.3 のアンインストール $ sudo yum remove php* -y # PHP 7.3 のインストール(まずは php と php-common のみ) $ sudo yum install -y --enablerepo=remi,remi-php73 php php-common # インストールしたパッケージの確認 $ yum list installed | grep php # その他の足りないパッケージをインストール $ sudo yum install -y --enablerepo=remi,remi-php73 php-devel php-mbstring php-mysql php-pdo php-pear php-xml # php-gd をインストールしようとしてエラーが出る $ sudo yum install -y --enablerepo=remi,remi-php73 php-gd エラー: パッケージ: gd-last-2.3.0-1.el6.remi.x86_64 (remi) 要求: libwebp.so.5()(64bit) # libwebp をインストール $ sudo yum install -y --enablerepo=epel libwebp # 再度 php-gd のインストールを試す $ sudo yum install -y --enablerepo=remi,remi-php73 php-gd # インストールしたパッケージの確認 $ sudo yum list installed | grep php # バージョン確認 $ php -v PHP 7.3.19 (cli) # PHP のログディレクトリ作成 $ sudo mkdir /var/log/php $ sudo chown apache:apache /var/log/php # php.ini を編集 $ sudoedit /etc/php.ini
php.ini で以下の設定を書き換える
mbstring.language = Japanese mbstring.detect_order = auto date.timezone = Asia/Tokyo expose_php = Off memory_limit = 512M post_max_size = 128M upload_max_filesize = 128M error_log = /var/log/php/error.log
php.ini の編集が終わったら、Apache を再起動する
# Apache 再起動 $ sudo service httpd graceful # エラーログを確認 $ tail -f /var/log/php/error.log
エラーログを表示しながら、サイトにアクセスして動作確認を行う。
PHP のバージョンアップが問題なく終われば、ログローテーションを仕込む。
# ログディレクトリ $ sudo ls -l /var/log/ # 先程 php.ini で設定した PHP のログディレクトリ $ sudo ls -l /var/log/php # ログローテーションの設定ファイルを確認 $ sudoedit /etc/logrotate.conf # 個別設定ファイル保存先 $ ls -l /etc/logrotate.d # httpd の設定ファイルを覗いてみる $ less /etc/logrotate.d/httpd # PHP のローテーションを新規作成 $ sudoedit /etc/logrotate.d/php /var/log/php/error.log { notifempty daily missingok dateext rotate 14 copytruncate } # 確認 $ sudo logrotate -dv /etc/logrotate.d/php # 強制的に実行 $ sudo logrotate -fv /etc/logrotate.d/php # ローテーションされたか確認 $ sudo ls -l /var/log/php # ログファイルの確認 $ less /var/log/php/error.log