CentOS 7 に PHP 7.0 を yum でインストールする手順

投稿者 : OSCA

[PR] "東野・岡村の旅猿"で登場したロケ地を紹介するファンサイト「あの場所へ行こう!」はこちら。

概要

 CentOS 7 の標準の yum リポジトリでは PHP 5.4 が提供されていますが、新しくサーバーを構築する際にはもっと新しいバージョンの PHP をインストールしたい場合があります。 本稿では CentOS 7 に PHP 7.0 を yum でインストールする手順について解説します。

なお、もっと新しい PHP をインストールする記事をお探しの場合は、次の記事を参考にしてください。

Remi を活用しよう

 上記の通り、CentOS 7 の標準リポジトリでは PHP 7.0 が提供されていません。 しかし、RedHat 系 Linux に PHP の最新版を提供することをミッションとする Remi というプロジェクトのリポジトリを利用すれば、yum で最新の PHP をインストールすることができます。

Remi リポジトリの追加

 それではさっそく Remi の yum リポジトリを追加してみましょう。 ここからは、root 権限を持つユーザでコマンドを実行してください。 Remi で提供されているソフトウェアをインストールするためには EPEL のリポジトリも必須要件となっていますので、先に EPEL のリポジトリの追加を行った後に Remi のリポジトリを追加します。

 EPEL のリポジトリ情報は CentOS 7 標準の yum リポジトリで提供されていますので、次の yum install コマンドでインストールすることができます。

# yum -y install epel-release

 EPEL のリポジトリ情報がインストールできましたので、次に Remi のリポジトリ情報をインストールします。 remi の RPM の URL は、Remi のリポジトリの公式サイトで確認することができますが、CentOS 7 の場合は次のように URL を指定して yum コマンドでインストールします。 ※サーバーが海外にあるからか、たまに RPM が見つからないなどのエラーが発生しますが、次のインストールコマンドを何回か粘り強く実行したらインストールできます。

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

 EPEL と Remi のリポジトリが追加できると、/etc/yum.repo.d の配下は次のようになり、EPEL, Remi の設定が追加されたことがわかります。

# ls -l /etc/yum.repos.d/
total 52
-rw-r--r--. 1 root root 1664 Dec   9  2015 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 Dec   9  2015 CentOS-CR.repo
-rw-r--r--. 1 root root  649 Dec   9  2015 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  290 Dec   9  2015 CentOS-fasttrack.repo
-rw-r--r--. 1 root root  630 Dec   9  2015 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 Dec   9  2015 CentOS-Sources.repo
-rw-r--r--. 1 root root 1952 Dec   9  2015 CentOS-Vault.repo
-rw-r--r--. 1 root root  957 Mar 31  2016 epel.repo
-rw-r--r--. 1 root root 1056 Mar 31  2016 epel-testing.repo
-rw-r--r--. 1 root root 1177 Jun 30 08:25 remi-php70.repo
-rw-r--r--. 1 root root 1177 Jun 30 08:25 remi-php71.repo
-rw-r--r--. 1 root root 2340 Jun 30 08:25 remi.repo
-rw-r--r--. 1 root root  449 Jun 30 08:25 remi-safe.repo

PHP 7.0 のインストール

 Remi リポジトリを利用して PHP 7.0 をインストールする準備が整いました。 さっそく PHP 7.0 をインストールしてみましょう。

Apache httpd + PHP 7.0 の組合せでインストール

 PHP は WEB サーバー上で動作させることがほとんどですので、今回は Apache httpd と組合せて PHP 7.0 をインストールしてみたいと思います。 まずは yum search で httpd と PHP 7.0 のパッケージを検索して、リポジトリで提供されていることを確認してみます。 パッケージ名には httpdphp70 を指定します。

# yum search httpd php70
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: www.ftp.ne.jp * epel: ftp.jaist.ac.jp * extras: www.ftp.ne.jp * remi-safe: mirror.bebout.net * updates: www.ftp.ne.jp (中略) httpd.x86_64 : Apache HTTP Server httpd-devel.x86_64 : Development interfaces for the Apache HTTP server (中略) php70.x86_64 : Package that installs PHP 7.0 php70-build.x86_64 : Package shipping basic build configuration php70-php.x86_64 : PHP scripting language for creating dynamic web sites

 httpd.x86_64 や php70.x86_64 などの検索結果が表示され、どちらも利用できることがわかりました。 PHP 7.0 関連のパッケージは php70-xxxxx のような名称になっています。

 それでは httpd と PHP 7.0 をインストールします。 今回は Apache httpd の上で PHP が動く最低限のパッケージをインストールします。 利用するアプリケーションに合わせて、追加で mbstring などの PHP の拡張をインストールするようにしてください。

# yum -y install httpd php70 php70-php
...
Dependencies Resolved
====================================================================================
 Package              Arch       Version                    Repository      Size
====================================================================================
Installing:
 httpd                  x86_64   2.4.6-40.el7.centos.4      updates         2.7 M
 php70                  x86_64   1.0-5.el7.remi             remi-safe       2.9 k
 php70-php              x86_64   7.0.13-1.el7.remi          remi-safe       1.3 M
Installing for dependencies:
 audit-libs-python      x86_64   2.4.1-5.el7                base             69 k
 checkpolicy            x86_64   2.1.12-6.el7               base            247 k
 environment-modules   x86_64   3.2.10-10.el7              base            107 k
 httpd-tools            x86_64   2.4.6-40.el7.centos.4      updates          83 k
 libX11                 x86_64   1.6.3-2.el7                base            605 k
 libX11-common          noarch   1.6.3-2.el7                base            162 k
 libXau                 x86_64   1.0.8-2.1.el7              base             29 k
 libcgroup              x86_64   0.41-8.el7                 base             64 k
 libsemanage-python     x86_64   2.1.10-18.el7              base             94 k
 libxcb                 x86_64   1.11-4.el7                 base            189 k
 mailcap                noarch   2.1.41-2.el7               base             31 k
 php70-php-cli          x86_64   7.0.13-1.el7.remi          remi-safe       2.6 M
 php70-php-common       x86_64   7.0.13-1.el7.remi          remi-safe       584 k
 php70-php-json         x86_64   7.0.13-1.el7.remi          remi-safe        56 k
 php70-runtime          x86_64   7.0-5.el7.remi             remi-safe       1.1 M
 policycoreutils-python x86_64   2.2.5-20.el7               base            435 k
 python-IPy             noarch   0.75-6.el7                 base             32 k
 scl-utils              x86_64   20130529-17.el7_1          base             24 k
 setools-libs           x86_64   3.3.7-46.el7               base            485 k
 tcl                    x86_64   1:8.5.13-8.el7             base            1.9 M

 インストールが完了したら、Apache httpd が再起動時に自動で起動するように設定します。

# systemctl enable httpd.service

 そして Apache httpd を起動します。

# systemctl start httpd.service

 PHP 7.0 が本当にインストールされたかを確認するため、インストールされている PHP の情報を表示する phpinfo 関数を実行する PHP ファイルを /var/www/html/info.php として作成します。

# vi /var/www/html/info.php
<?php
phpinfo();

 それでは今作成した info.php にアクセスしてみましょう。 http://<あなたのサーバホスト名>/info.php にアクセスします。 すると次のように画面が表示され、PHP 7.0 がインストールされたことが確認できると思います。 (画面が表示されない場合は CentOS の Firewall 機能などによりアクセスが遮断されている可能性がありますので、Firewall の設定などを見なおしてください。 オススメはしませんが、Firewalld は systemctl stop firewalld コマンドで停止できます。)

おわりに

本稿では CentOS 7 に PHP 7.0 をインストールする手順について解説しました。 インストールが完了した次のステップとして次の記事を参考に、パフォーマンス設定・セキュリティ設定をすることをお勧めします。

PHP環境構築トップページへ戻る

PHPのトップへ戻る

著者 : OSCA

OSCA

Java, PHP 系のWEBエンジニア。 WEBエンジニア向けコミュニティ「WEBエンジニア勉強会」を主催。 個人として何か一つでも世の中の多くの人に使ってもらえるものを作ろうと日々奮闘中。
@engineer_osca