schedule2021-07-17

PHP5.xをCentOS7にインストールする

PHP5.xをバージョン指定してCentOS7にインストールするコマンドです。 PHP7.xやPHP8.xも同様に可能です。 シェルスクリプトで自動化できるようにしたので、VMやDockerのイメージ作成にも使えます。

この記事にたどり着いた方の大半はレガシーな古いPHPのシステムを刷新しようと頑張る方だと思うので応援したい。 今更感もあるがちゃんと書く。

Contents

環境

$ sudo cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

このサーバにPHP5.xをインストールします。

ここではPHP-FPMを利用しないApacheの構成を想定してます。

php56をインストールするコマンド

例としてphp56といくつかのphpモジュールやPEARのパッケージをインストールする例を載せます。 一緒にhttpd24もインストールされます。

#!/bin/bash
yum update

## remi
yum install -y epel-release
yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

# デフォルトだと5.4をインストールしてしまう
# php5.6リポジトリの有効化
yum install -y yum-utils
yum-config-manager --enable remi-php56

# php5.6のインストール
yum -y install php
yum -y install php-mbstring \
    php-xml \
    php-pear

# 設定ファイルのバックアップ
cp /etc/php.ini /etc/php.ini.org
# /etc/php.ini.d/ にPHPモジュールの設定ファイルがある


# pear packages
pear install Mail
pear install Mail_Mime

バージョンの指定について

yum-config-manager --enable remi-php56のバージョンをremi-php54remi-php73などにしてあげるとPHPのバージョンを指定できる。

デフォルトではphp5.4がインストールされてしまいます。 yum -y --enablerepo=remi,remi-php56 phpでphp56をphpとしてインストールする方法もありますが、なぜかphp5.4がインストールされてしまう問題が起きたためyum-utilsをインストールしてyum-config-managerコマンドでremi-php56を有効にしてからインストールする方法に落ち着きました。

yum-config-manager --enable remi-php56を実行すると/etc/yum.repos.d/remi.repoの設定ファイルを書き換えてremi-php56を有効化します。

バージョン確認。

# php -v
PHP 5.6.40 (cli) (built: Jun 28 2021 14:40:12)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

/etc/yum.repos.d/remi.repoについて

yum-config-manager --enable remi-php56を実行すると/etc/yum.repos.d/remi.repoの設定ファイルの[remi-php56]enabled=1と書き換えてremi-php56を有効化します。

設定ファイルの中身はこんな感じです。

$ sudo cat /etc/yum.repos.d/remi.repo
# Repository: http://rpms.remirepo.net/
# Blog:       http://blog.remirepo.net/
# Forum:      http://forum.remirepo.net/

[remi]
name=Remi\'s RPM repository for Enterprise Linux 7 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/7/remi/$basearch/
#mirrorlist=https://rpms.remirepo.net/enterprise/7/remi/httpsmirror
mirrorlist=http://cdn.remirepo.net/enterprise/7/remi/mirror
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-php55]
name=Remi\'s PHP 5.5 RPM repository for Enterprise Linux 7 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/7/php55/$basearch/
#mirrorlist=https://rpms.remirepo.net/enterprise/7/php55/httpsmirror
mirrorlist=http://cdn.remirepo.net/enterprise/7/php55/mirror
# NOTICE: common dependencies are in "remi-safe"
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-php56]
name=Remi\'s PHP 5.6 RPM repository for Enterprise Linux 7 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/7/php56/$basearch/
#mirrorlist=https://rpms.remirepo.net/enterprise/7/php56/httpsmirror
mirrorlist=http://cdn.remirepo.net/enterprise/7/php56/mirror
# NOTICE: common dependencies are in "remi-safe"
enabled=1 #これが1になった
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

remiリポジトリの設定はいくつかあるのでこれから有効にするPHPのバージョンを選べばよい。

$ sudo cat /etc/yum.repos.d/remi
remi-glpi91.repo   remi-glpi94.repo   remi-php70.repo    remi-php73.repo    remi.repo
remi-glpi92.repo   remi-modular.repo  remi-php71.repo    remi-php74.repo    remi-safe.repo
remi-glpi93.repo   remi-php54.repo    remi-php72.repo    remi-php80.repo

リンク

この記事に関するリンクを挙げておきます。 疑問に思ったら一読をお勧めします。

よくわかんないよってなったらTwitterのDMしてくれたら何とかします。 PHPのレガシーシステムの刷新とか仕事につながったら嬉しいです。