CentOS 7 にPHP 7.3系をインストールする。Apache httpdと最新のPHPでウェブアプリの入門環境を作成。

2019/07/04 Apache, CentOS, Linux, php, サーバー構築

cent-php73-inst-top
以前の記事でCentOS上にSSL対応したApache httpdの環境を作成してPHP7.2系をインストールする手順を紹介しました。

2018年5月当時に書かれた、前回の記事からPHPの安定バージョンは7.2系から7.3系にアップデートされています。

スポンサーリンク

今回の記事では2019年6月現在でのPHP安定バージョンである7.3系の導入手順を紹介してみたいと思います。

1.PHP 7.3を導入する環境

PHP 7.3を導入するOSとウェブサーバーの環境は以前の記事

で紹介していますが、基本的な環境について改めて記載しておきます。

  • OSのバージョンはCentOSで最新(2019年6月現在)のバージョン7.6を利用しています。
  • ウェブサーバーとしてApache httpd 2.4.6がインストールされています。
  • Apacheは基本的な設定が完了して、テストページが表示されています。
  • ApacheはHTTPS通信に対応した設定が完了しています。
  • サーバーはインターネットへ接続されており、グローバルIPアドレスが一つ、割り当てられています。
  • ファイアウォールとしてfirewalldを設定しています。

ウェブサーバーとして利用している Apache httpdはCentOSのBaseレポジトリからインストールしているものになります。この環境を前提にPHPの導入と設定を進めていきます。

2.PHP導入の前提条件

PHPの導入にあたって、前提条件は以下の通りです。
OSのバージョンは2019年6月現在で、最新のCentOS 7.6を利用します。実際のバージョンを確認してみます。

上記から7.6であることが確認できました。併せてApache httpdのバージョンについても確認します。Apache httpdのバージョンは以下のコマンドで確認できます。

上記からApache httpdのバージョンが2.4.6であることが確認できました。
導入するphpのバージョンですが、現在、利用されている主なバージョンとしては

  • 5.4系(CentOSのベースに登録されているもの、OSのサポート期間に準ずる)
  • 7.1系(7系の前バージョン、サポート期間が2019年12月まで)
  • 7.2系(7系の前バージョン、サポート期間が2020年12月まで)
  • 7.3系(最新の安定バージョン、サポート期間が2021年12月まで)

の4つがあります。これ以前のバージョン(OSのベースパッケージ以外で導入したPHPについては5.4もサポートが終了しています。)については、サポートされていないため、対象外としています。本記事ではセキュリティ面とパフォーマンス(PHP5系と比較して2倍の処理能力ある)から7.3系をインストールしていきます。

3.PHPインストール前の事前準備

PHP 7.3系のインストール前に事前準備を行います。作業としては、導入する環境にBaseレポジトリからのPHPがインストールされていないかを確認することと、PHP 7.3系をインストールするのに必要なレポジトリであるremiレポジトリの追加になります。

3-1.PHP5.4系のインストール確認

PHP 7.3系をインストールする前にCentOSのBaseレポジトリからインストールされたPHP 5.4系がないことを確認します。PHP5.4系がインストールされていると、設定ファイルやモジュールの読み込み時に混乱する可能性があります。以下のコマンドでPHPがインストールされていないことを確認します。

PHPに関するパッケージが表示されないことが確認できれば、完了です。もし出力結果にphpが含まれている場合は

などでPHP5系のパッケージを削除してください。

3-2.remiレポジトリの設定

OSデフォルトではPHP 7.3系に関するパッケージを探してみても見つかりません。これはOSのベースに用意されているレポジトリにはPHPの7.3系は含まれていなことが原因です。

3-2-1.remiレポジトリの追加

remiレポジトリはEPELの補完的な立ち位置の外部リポジトリです。有志によって管理されているプロジェクトになります。
remiの目的ですが、最新バージョンのPHPモジュールをRHEL系のディストリビューションに提供することです。このレポジトリをインストールします。
参考サイト:remiレポジトリ公式サイト
上記の公式サイトにリンクにあるRedhat enterprise linux 7用のremiを利用します。インストールにはyumコマンドを利用します。
以下のように実行します。

以下が実行結果です。

エラーが出力なく”完了しました!”と表示されれば、remiレポジトリの追加は完了です。追加後には、レポジトリを設定するファイルとしてphp関連のものが追加されていることが確認できます。
レポジトリファイルは/etc/yum.repos.d/以下に含まれています。以下が追加後のディレクトリ一覧になります。

remi関連のファイルが追加されていることが確認できます。

3-2-2.remiレポジトリの追加の確認

remiレポジトリでPHP7.3系の導入に利用するレポジトリは“remi-php73”レポジトリになります。remi-php73レポジトリはデフォルトでは有効になっていません。それ程、  使用頻度も高くないことからphp7.3系に関連したyumコマンドを実行する際だけ有効にするようにします。  この場合はyumコマンドにオプションである”–enable-repo=remi,remi-php73”を付与します。例えばphpパッケージの詳細を表示する場合には以下のように実行します。

実行結果は以下の通りです。

php7.3系のパッケージについて詳細が表示されます。remiレポジトリを有効にするオプションを付与して再度、“yum search”コマンドでPHPのパッケージを探してみます。

今度はPHPのバージョン7.3系を含むパッケージが表示されることが確認できました。この中で必要になるものは以下のパッケージになります。
php7.3系基本パッケージ

  • php.x86_64 : Package that installs PHP 7.3
  • php-xml.x86_64 : A module for PHP applications which use XML
  • php-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC protocol
  • php-pecl-mcrypt.x86_64 : Provides bindings for the unmaintained libmcrypt.

マルチバイト対応用パッケージ

  • php-mbstring.x86_64 : A module for PHP applications which need multi-byte string handling

画像処理用パッケージ

  • php-gd.x86_64 : A module for PHP applications for using the gd graphics library

MySQLデータベース連携用パッケージ

  • php-pdo.x86_64 : A database access abstraction module for PHP applications
  • php-mysqlnd.x86_64 : A module for PHP applications that use MySQL databases
  • php-pecl-mysql.x86_64 : MySQL database access functions

上記のphpパッケージをインストール対象とします。

4.PHP 7.3系パッケージのインストール

本章では実際にPHP7.3系のパッケージをインストールする手順を紹介していきます。

4-1.PHPパッケージの情報確認

php73パッケージのインストール前に、パッケージの情報を確認しておきます。

実行結果は以下の通りです。各パッケージの役割などを確認しておくと、インストールするパッケージの意味合いをイメージしやすいと思います。

各パッケージの詳細を確認後、インストールに入ります。

4-2.PHPのインストール

PHP 7.3系のパッケージは”yum install”コマンドでインストールすることができます。項目4-1.で必要なパッケージの情報が確認できましたので、以下のコマンドでインストールします。

上記ではyumコマンドに-yオプションを付けることでインストール時の確認応答を省いています。パッケージを複数インストールする場合はスペースを入れてパッケージ名を列記します。コマンドを実行すると、以下のようにインストールが開始されます。

エラーの出力がなく”完了しました!”と表示されれば、phpは正常にインストールされています。

4-3.インストールされたPHPパッケージの確認

PHPがインストールされたことを確認します。インストールされているパッケージはyumコマンドで確認できます。以下のようにyumを実行することで、PHPパッケージがインストールされていることを確認します。

出力結果として、以下のPHPパッケージが表示されることを確認します。

上記のパッケージが表示されれば、PHPのパッケージ確認は完了です。

スポンサーリンク

4-4.PHP 7.3 cliの動作確認

PHPはcliから動作させることも可能です。phpコマンドを使ってバージョンを確認してみます。

正常に7.3系のバージョンが表示されました。

5.PHPの基本的な設定

項目5.の手順までで、PHP7.3系パッケージの導入とモジュールの設定までが完了しました。 PHPの場合、この状態でも動作しますが、基本的な設定を行うことをお勧めします、本記事では運用するにあたって最低限、必要になる設定を行います。 設定の前提は以下の通りです。

  • 最低限のセキュリティ設定
  • アップロードサイズの変更(2Mから20MBへ)
  • タイムゾーンの設定
  • マルチバイト対応(日本語対応)

この条件に合わせて設定を行っていきます。

5-1.php.iniの変更

PHPの設定は/etc/以下にあるphp.iniファイルで行います。php.iniの設定変更前に、既存のファイルをバックアップしておきます。具体的には以下の手順でコピーを行います。

バックアップの完了後、エディタで設定ファイルを開いて変更を行います。本環境ではOSの標準的なエディタである、viエディタを利用しています。

5-1-1.PHPのセキュリティ設定

PHPはデフォルトの設定ではhttpヘッダーにバージョンを表示します。バージョンは公開しないほうがセキュアになりますので、phpのバージョンを非表示にする設定を行います。374行目にある

に変更します。

5-1-2.アップロードサイズの変更

PHPのデフォルト設定ではアップロードできるファイルのサイズが2MBだと少ないため、20Mに変更します。
まずはPOST データの最大サイズを設定するpost_max_sizeを変更します。デフォルトでは8Mですが、これを20Mに変更します。
672行目にある

に変更します。

post_max_sizeの変更だけでは、ファイルのアップロード容量を増やせないため、併せてupload_max_filesizeを変更します。
825行目にある

に変更します。

5-1-3.タイムゾーンの設定

タイムゾーンの設定を行います。これを設定しないとエラーが大量に出力されます。勿論、アプリケーションが時間を扱う時にも運用環境に合わせて設定が行われていないと問題になります。日本の場合は”Asia/Tokyo”になりますので、これをdate.timezoneとして設定を行います。
902行目

に変更します。

5-1-4.マルチバイト対応(日本語対応)設定

以下の項目は日本語を利用するうえでの設定変更になります。一般的な設定を紹介していますが、日本語の扱いは運用環境によって異なると思います。動作するアプリケーションに応じて、適宜、変更してください。
まずはmbstringで使用される言語のデフォルト値を定義するmbstring.languageを設定します。
1509行目のパラメーター

に変更します。

続いて内部文字エンコーディングのデフォルト値を定義するmbstring.internal_encodingを設定します。ここではOSに合わせてUTF-8を指定しています。
1516行目のパラメーター

に変更します。

HTTP通信の時のインプット文字コードを指定するmbstring.http_inputを設定します。ここではUTF-8を指定しています。
1524行目のパラメーター

に変更します。

HTTP 出力文字コードを指定するmbstring.http_outputを設定します。ここではpassを指定して自動変換を行わないようにします。
1534行目のパラメーター

に変更します。

HTTP 入力変換を有効にするmbstring.encoding_translationをOnにします。文字化けが発生した場合はOffにします。
1542行目のパラメーター

に変更します。

文字コード自動検出の優先順位を定義するパラメーターであるmbstring.detect_orderを設定します。autoの場合、UTF-8が最初に選択されるため、ここはautoで問題ないかと思います。コメントである”;”を削除します。
1547行目のパラメーター

に変更します。

コードとして変換できない文字がある場合に、代替の文字を出力しないようmbstring.substitute_characterを設定します。コメントである”;”を削除します。
1552行目のパラメーター

に変更します。
以上でphp.iniの設定変更は完了です。変更したファイルを保存します。

6.php.ini設定ファイルの反映とhttpdの確認

ここまででphpの基本的な設定は完了しました。変更した設定を反映するためにhttpd(apache)を再起動します。systemctlを以下のように実行します。

エラーが出力されなければ、httpdは正常に再起動しています。
再起動後にhttpdのstatusを確認します。

上記の出力結果から、httpdは正常に再起動していることが確認できます。
併せてhttpd側にphpがモジュールとして組み込まれていることを確認します。確認はhttpdコマンドに-Mを付けて実行します。

結果としてphp7_moduleが表示されれば、確認は完了です。

7.動作確認

項目6.まででPHPの設定が完了しましたので、ここからは実際にCLIからのテストと、ブラウザでサイトへ接続して、正常にPHPが動作していることを確認していきます。利用しているブラウザはGoogle Chromeになります。

7-1.CLIでのPHP動作確認

コマンドライン(CLI)からphpコマンドを利用してPHPの動作を確認することができます。phpコマンドを以下のように実行します。

実行結果は以下のようになります。(出力される量が多いので一部のみを除いて、割愛しています。)

以上のようにphpの設定情報が表示されれば、PHPは正常に動作しています。

7-2.ブラウザでのPHP動作確認

ブラウザからも動作を確認しておきます。設定したApache httpdのドキュメントルートに動作確認用のファイルを作成して、ブラウザからアクセスを行います。

7-2-1.動作確認用のファイルを作成

動作確認用のファイルを作成します。ここではドキュメントルートとして/home/www/htmlが設定されている前提です。
ディレクトリを移動します。

viコマンドでindex.phpというファイル名を作成します。

ファイルの内容は以下になります。

変更後にファイルを保存してください。これで動作確認用ファイルの作成は完了です。

7-2-2.ブラウザからアクセスする

ブラウザからphpinfoの画面が表示できることを確認します。
サイトがあるホスト名がwww.testdom.comの場合は以下のようにブラウザに入力します。

https://www.testdom.com/index.php

正常に設定ができている場合、以下のようなphpの情報が画面に表示されます。
cent-httpd-php73-01
これでPHPの動作確認は完了です。 テスト用に作成したindex.phpファイルはセキュリティホールになりますので、削除しておきます。 

8.まとめ

ここまででApache httpdとPHPの導入が完了しました。この状態でPHPプログラムは動作しますので、PHPの入門にも利用できます。WordPressなどのCMSを動作させるためには、別途データベースが必要になります。オープンソースの代表的なデータベースであるMariaDBを導入する手順については記事

で紹介しています。まずは本環境でPHPでプログラムを作成して、PHPに慣れることをお勧めします。その後にデータベースを導入してLAMP環境を作成してみては如何でしょうか。

関連する記事


Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  • スポンサーリンク