schedule2019-04-25

CentOS7にPHP7.3をインストールする

CentOS7にPHP7.3をインストールしていく手順です。7系は同じ手順で大丈夫です。 デフォルトのyumでは5.4までしかインストールできないため、EPELRemiを追加しています。

2019-01-07 追記 EPELのリポジトリを有効にしてインストールするようにコマンドを修正。

環境

  • CentOS7.6
  • x86_64

目的のPHPは7.3です。

PHPのインストール前の準備

EPELやRemiが追加済みであれば、飛ばしてください。

現在のPHPバージョンを確認

$ rpm -qa | grep php
$ php -v
-bash: php: コマンドが見つかりません

PHPは入っていないようです。

インストール済みのPHPを削除する場合はyum remove php-*です。

EPELリポジトリを追加

CentOS7のExtraパッケージにEPELのrpmがあります。 EPELをインストール後、更新します。

# EPELをインストール
$ sudo yum install epel-release

# yumを更新
$ sudo yum update

Remiリポジトリを追加

RemiこちらもEPELと同様に便利なリポジトリです。 Remiをインストール後、更新します。

# Remiをインストール
$ sudo yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

# yumを更新
$ sudo yum update

remi-release-8.rpmもありましたがEnterprise Linux - Development versionだったので、remi-release-7.rpmを使いました。

リポジトリのリストを確認

現在のリポジトリリストです。

$ sudo yum repolist
リポジトリー ID                                  リポジトリー名
base/7/x86_64                                    CentOS-7 - Base
*epel/x86_64                                     Extra Packages for Enterprise Linux 7 - x86_64
remi-safe                                        Safe Remi's RPM repository for Enterprise Linux 7 - x86_64

EPELとRemiが入っており、バージョンも大丈夫そうです。

PHP7.xをインストールする

PHP7.3をインストールします。 他の7.x系をお探しのかたは、数値を読み替えてください。

yumでPHP7.3をインストールする

remi-php73と依存関係のモジュールをインストールします。

$ sudo yum -y install --enablerepo=epel,remi,remi-php73 php php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt
インストール:
  php.x86_64 0:7.3.4-1.el7.remi            php-devel.x86_64 0:7.3.4-1.el7.remi
  php-gd.x86_64 0:7.3.4-1.el7.remi         php-mbstring.x86_64 0:7.3.4-1.el7.remi
  php-pdo.x86_64 0:7.3.4-1.el7.remi        php-pecl-mcrypt.x86_64 0:1.0.2-2.el7.remi.7.3
  php-xml.x86_64 0:7.3.4-1.el7.remi

依存性関連をインストールしました:
  apr.x86_64 0:1.4.8-3.el7_4.1                  apr-util.x86_64 0:1.5.2-6.el7
  autoconf.noarch 0:2.69-11.el7                 automake.noarch 0:1.13.4-3.el7
  cpp.x86_64 0:4.8.5-36.el7_6.1                 dejavu-fonts-common.noarch 0:2.33-6.el7
  dejavu-sans-fonts.noarch 0:2.33-6.el7         fontconfig.x86_64 0:2.13.0-4.3.el7
  fontpackages-filesystem.noarch 0:1.44-8.el7   gcc.x86_64 0:4.8.5-36.el7_6.1
  gcc-c++.x86_64 0:4.8.5-36.el7_6.1             gd-last.x86_64 0:2.2.5-8.el7.remi
  glibc-devel.x86_64 0:2.17-260.el7_6.4         glibc-headers.x86_64 0:2.17-260.el7_6.4
  httpd.x86_64 0:2.4.6-88.el7.centos            httpd-tools.x86_64 0:2.4.6-88.el7.centos

確認する

コマンドでインストールを確認します。

$ php -v
PHP 7.3.4 (cli) (built: Apr  2 2019 13:48:50) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies

$ rpm -qa | grep php
php-devel-7.3.4-1.el7.remi.x86_64
php-mbstring-7.3.4-1.el7.remi.x86_64
php-pecl-mcrypt-1.0.2-2.el7.remi.7.3.x86_64
php-pdo-7.3.4-1.el7.remi.x86_64
php-json-7.3.4-1.el7.remi.x86_64
php-cli-7.3.4-1.el7.remi.x86_64
php-gd-7.3.4-1.el7.remi.x86_64
php-common-7.3.4-1.el7.remi.x86_64
php-7.3.4-1.el7.remi.x86_64
php-xml-7.3.4-1.el7.remi.x86_64

インストールできているが、php73でコマンドが通っているようです。

tips

php-○○ と共通部分を書くのが面倒くさい

モジュールを追加していくとphp-○○と同じ文字が並んで書くのがだるくなります。 そこでphp-{devel,mbstring}と書くとphp-devel, php-mbstringをそれぞれインストールしてくれます。

インストールと同様に書くとこんな感じです。

$ sudo yum -y install --enablerepo=epel,remi,remi-php73 php php-{devel,mbstring,pdo,gd,xml,mcrypt}

リポジトリの有効化

モジュールによっては依存関係を解消できない等でエラーが出ます。

// 例 
Error: Package: php-cli-7.3.13-1.el7.remi.x86_64 (remi-php73)
           Requires: libargon2.so.0()(64bit)

Remiだけでphp-cliをインストールした際に依存関係を解消できずエラーがでました。epelのリポジトリも有効にしてsudo yum -y install --enablerepo=remi,epelとすると解消します。 その他のモジュールなどで必要なリポジトリがある場合は--enablerepoの後に追記してください。

また、--skip-brokenを付けるとエラーが出た際にインストールを止めずに全て試みることができます。 最後にSkipped (dependency problems):とスキップしたものの一覧が出ます。

参考

CentOS7の設定についての記事