読者です 読者をやめる 読者になる 読者になる

vol.36 11年ぶりのアップデート! PHP7の導入方法

f:id:BOEL:20151211123558j:plain

こんにちは。Webエンジニアの毛利です。

2015年12月4日、プログラミング言語のPHP7がリリースししました。

メジャーバージョンが更新されるのは実に11年ぶりとなるPHP7。

大きな改修となるメジャーバージョンのアップデートではプログラムの骨組みから見直され、様々な改善がされており、パフォーマンスがPHP5系の2、3倍以上との噂もあります。

また、HHMVと比較され、PHP7の方が優れている面がベンチマークで証明されたりと、Webアプリケーションのサーバーサイドスクリプトの大きなパフォーマンス向上が期待できます。

 

新しくなったphp7のポイント

 ・メモリ消費などパフォーマンスの向上

 ・処理速度の向上

 ・スカラー型宣言などの新機能の実装

 ・5.6時点で廃止予定機能の削除

 ・下位互換のない変更

 など

 

機能について詳しい解説はPHPのリファレンスに情報がありますのでこちらを参照してみてください。

参考サイト

PHP 5.6.x から PHP 7.0.x への移行

 

Webサイト、Webアプリケーションの大きなパフォーマンス向上が見込まれるPHP7。

早く体験したい!いても立ってもいられなくなったのため、早速サーバーに導入することにしました。

今回使用する環境では開発バージョンRC6をインストールしていため、それらをいったんアンインストールし、再インストールします。

 

導入したバージョン PHP 7.0.0

導入する前のLAMP構成環境

OS(Linux): CentOS7.1

Webサーバーnginx1.8.0

CGIPHPPHP7.0.0RC6

データベースMariaDB 10.1.8

 

phpのアンインストール

今回使用する環境には既にPHPがインストールされており、今回はいったんアンインストールしてから再インストールすることにしました。

アンインストールにはyum removeを用います。

# yum remove php

 

 関連する依存パッケージも削除されます。

今回、今までの構築で外部リポジトリを使っい無理矢理デベロッパーバージョンを導入しており、このコマンドで削除することが出なかったため下記コマンドで試しました。

# yum --enablerepo=remi-php70 remove php\*

 

アンインストールはrpmコマンドで確認することができます。

# rpm -q php

 

phpのバージョンを確認する方法でも確認してみます。

#php -v

 

いずれもバージョン情報が出てこなければOKです。

これでphpがアンインストールされていることを確認できました。

 

PHP7の新規インストール

最新版をインストールするにはまず外部リポジトリを追加します。

最新のremiリポジトリをダウンロードし、rpmコマンドでリポジトリをインストールします。

# wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

# rpm -Uvh remi-release-7.rpm

rpmコマンドの-Uvhはオプションであり、Uは「アップデート」vは「詳細情報の出力」、hは「インストール状況の表示」となります。

新規インストールでもUオプションを付けても構いません。

 

yumコマンドでインストールを行います。

# yum -y install --enablerepo=remi-php70 php php-mbstring php-mysqlnd php-fpm

yumコマンドの中に-yを入れるとインストールの有無の意思確認を行わず、ファイルのダウンロードを終えるとすぐに開始します。

 

インストールが完了したら確認を行います。

# rpm -q php

# php -v

 

それぞれを実行したとき、以下のようなコードが表示されればインストール完了です。

# rpm -q php

php-7.0.0-1.el7.remi.x86_64

 

# php -v

PHP 7.0.0 (cli) (built: Dec 1 2015 17:53:27) ( NTS )

Copyright (c) 1997-2015 The PHP Group

Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies

 

Webサーバーの動作を兼ねてphpinfoをサーバーにアップロードし、確認します。

f:id:BOEL:20151211124209p:plain

 

おまけ

PHP6はないの?

PHP7が最新であることがそもそも前提となっている本記事ですが、比較される旧バージョンがPHP5なのにお気づきでしょうか?

PHP6はどこに行ってしまったんだろう?

 

結論からいうと、PHP6は破棄されたようです。

PHP6の開発では「内部的に文字列を全てUTF-16で実装する」との方針があったようなのですが、実装が複雑になる割に機能改善が見込まれないため、プロジェクト自体が頓挫したようです。

方針を転換して、新しく開発されたためバージョンが6ではなく、7になりました。

内容を要約した記事がありますので詳しくはこちらを参照してみてください。

 

参考サイト

PHP6開発 UTF-16化を断念、5.3へロールバック | マイナビニュース

 

マスコットキャラクター「elePHPant」

f:id:BOEL:20151211124333j:plain

PHPマスコットキャラクターの「elePHPant」です。

あまり有名ではありませんが...

そもそもなぜゾウさんなのでしょう?

 

それは「PHP」の文字を崩してみるとゾウっぽいという理由からだそう。

フローを見てみると、確かに、そう見えてきます。

下記に参考サイト載せましたのでelePHPantが生まれる変遷を詳しく知りたい方は参照ください。

 

elePHPant折紙のテンプレートが公開されています。

 

参考サイト

PHPのマスコットキャラクター「elePHPant」が象である理由

The PHP Mascot's Birth - Creator Of The elePHPant Vincent Pontier Reveals The True Story!(英語)

Elroubio(「elePHPant」のページ)

 

まとめ

PHPは当初の予定から少し延期して12月3日にリリースしました。

サーバーへの導入の手順はそこまで難しいものではありません。

大きなパフォーマンス向上が見込めるPHP7ですが、PHP5から仕様変更した部分もあり、本環境への導入は、現在運用しているCGIプログラム、Webアプリケーションの仕様を確認し慎重にアップデートすることをお勧めします。

PHP7と比較されるHHMVは、今までのPHP5系との互換性も高いようです。

PHPベースで処理を高速化したいと考えるときに、PHP7へのアップデートではない1つの選択肢として考慮できると思います。

 

当環境ではPHP7を導入し、wordpressの動作テストを行いましたが、

現状サイトが全く表示されない等の大きな不具合はなく、通常の動作には支障がありません。

ただ、プラグイン等を導入している場合、対応できない場合がありますのでアップデートを待つか、自身でプログラムを修正する必要があります。

当環境でも検証を続けており、何かあればまた別の機会にご紹介しようと思っています。

 

次回はWebサーバーの環境の構築ってどうやるの?に注目し、現在構築している環境の構成や手順についてご紹介します。

 

参考URL

パッケージの削除

yum|パッケージの削除

rpmコマンドでインストール有無を確認する方法

yumによるRPMパッケージのアンインストール - 逆引き集 - Fedoraで自宅サーバー構築

rpmコマンドのオプション

RPMコマンドを使いこなしたい - ITmedia エンタープライズ

PHP7インストールの手順

祝!PHP7.0.0リリース | WinRoad徒然草