====== CentOS 6 で PHP のバージョンアップ ======
CentOS 6 で PHP 5.3 から 7.3 へバージョンアップする手順。\\
7.3 以外をインストールしたい場合は、バージョンを指定している箇所の数字を変更すればOK。
===== 1.現状を確認 =====
# 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
===== 2.リポジトリをインストールし直す =====
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
===== 3.PHP を入れ直す =====
# インストールしたい 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
エラーログを表示しながら、サイトにアクセスして動作確認を行う。
===== 4.PHP のログローテーション設定 =====
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