記事一覧

PHP7をWindowsにインストールしてみる




目次



PHP7で時代が変わるかも

ハローみなさん、エジソンです。

PHP7がRCバージョンとしてリリースされているようです。前バージョンのPHPの2倍以上のパフォーマンスが計測されており、高いポテンシャルを有していると、ちまたで噂のPHP7先生でございます。

これは、インストールして試してみるしかない! ということで、インストールして動作環境を構築にすることに成功したので、手順をまとめてみました。

IT用語辞典バイナリ - RC版
RC版とは、ハードウエアやソフトウエアの開発段階のひとつで、製品候補としてのテスト工程に入ったもののことである。


PHP7のインストール手順

前提となる環境は、 Windows7 64bit版 です。

PHP7のダウンロード

まずは、PHP7(VC14 x64 Thread Safe)を入手します。以下のサイトからダウンロードしましょう。

PHP For Windows

php-windows-download.png

今回は、64bit OSで動かすため、64bitバージョンのバイナリをダウンロードします。ちなみに、ダウンロードした当時は、PHP7 RC7で、以下のようなファイル名になっていました。

php-7.0.0RC7-Win32-VC14-x64.zip

Apacheのダウンロード

次に、Apache2.4(VC11 x64)を入手します。以下のサイトからダウンロードしましょう。

Apache Haus

apache-windows-download.png

httpd-2.4.17-x64-vc11.zip

Visual C++再頒布可能ディストリビューションのダウンロード

ApacheはVC11でビルドされています。一方で、PHPはVC14でビルドされています。そのため、以下のVisual C++のコンポーネントを事前にインストールしておく必要があります。

Visual Studio 2012 更新プログラム 4 の Visual C++ 再頒布可能パッケージ
Visual Studio 2015 の Visual C++ 再頒布可能パッケージ

ダウンロードしたファイルを、実行するとインストールがはじまります。そのままインストールしましょう。

ApacheとPHPの解凍

ダウンロードした、ApacheとPHPファイルを解凍します。

僕は、Cドライブの直下に「php7」というフォルダを作成して、その下に「Apache24」・「PHP7」というフォルダを配置しました。

php7-folder.png

Apacheの設定ファイルの編集

Apacheの設定ファイル、httpd.confを編集します。

c:\php7\Apache24\conf\httpd.conf

…

# Apacheのルートパスを指定
Define SRVROOT "C:\php7\Apache24"

…

# ポート番号の指定。デフォルトの80番ポートでも良いが、ここでは番号の競合が無さそうな数値をチョイス
Listen 7777

…

# LoadModuleの末尾にPHPモジュールを読み込む設定を記述

LoadFile "C:\php7\PHP7\php7ts.dll"
LoadFile "C:\php7\PHP7\libpq.dll"

PHPIniDir "C:\php7\PHP7"

# Add to the end of the LoadModule section
LoadModule php7_module "C:\php7\PHP7\php7apache2_4.dll"
AddHandler application/x-httpd-php .php

…


PHPの設定ファイルの編集

PHPの設定ファイル、php.ini-developmentをコピーして、php.iniにリネームして編集します。

c:\php7\PHP7\php.ini
…

; 最大メモリサイズの指定。デフォルトでは少ないと感じたので修正。
memory_limit = 1024M

…

; POST最大サイズの指定。デフォルトでは少ないと感じたので修正。
post_max_size = 160M

…

; 拡張DLLのフォルダパスを指定。
extension_dir = "C:\php7\PHP7\ext"

…

; アップロードファイル最大サイズの指定。デフォルトでは少ないと感じたので修正。
upload_max_filesize = 150M

…

; 今回利用したかった、拡張機能を有効に設定。
extension=php_fileinfo.dll
extension=php_mbstring.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_pdo_sqlite.dll
extension=php_sqlite3.dll

…

; date.timezoneを日本に指定
[Date]

…

date.timezone =Asia/Tokyo

…


ApacheをWindowsサービスとしてインストールする

最後の仕上げとして、ApacheをWindowsサービスとして登録します。

以下で紹介するバッチファイルを、c:\php7\Apache24\binに配置してください。インストールする場合には、install.batを右クリックして管理者として実行するとインストールされます。

uninstall.batは、アンインストールする場合に実行してください。アンインストール後は、今回の手順で配置したフォルダを全て削除すれば、ApacheとPHPをきれいに消去することができます。

start.batstop.batでApacheサービスの開始・終了が可能です。

install.bat
set curpath=%~dp0

%curpath%httpd.exe -k install -n "apache_for_php7"

pause

uninstall.bat
set curpath=%~dp0

%curpath%httpd.exe -k stop -n "apache_for_php7"
%curpath%httpd.exe -k uninstall -n "apache_for_php7"

pause

start.bat
set curpath=%~dp0

%curpath%httpd.exe -k start -n "apache_for_php7"

pause

stop.bat
set curpath=%~dp0

%curpath%httpd.exe -k stop -n "apache_for_php7"

pause

サービス名は、"apache_for_php7"です。適宜変更してください。ちなみに、 ApacheMonitor.exe でも、サービスの起動と終了を制御できます。

PHP7を動かしてみる

c:\php7\Apache24\htdocsにテスト用スクリプトを配置してPHPを動かしてみます。

test_string.php
<?php
$time_start = microtime(true);

$str = '';

for ($i = 0; $i < 1000000; $i++) {
	$str .= '1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890';
}

$timelimit = microtime(true) - $time_start;
echo '' . sprintf("%.f", $timelimit) . '<br />';




上記のスクリプトは、文字列連結を繰り返し実行するというシンプルなスクリプトです。

そんなスクリプトを、 PHP5.6 と PHP7 のそれぞれで、実行速度を計測してみたところ、以下のように結果になりました。

PHP5.6は約8秒で、PHP7はなんと約1秒! 本当かと疑ってしまうぐらい、おどろくべき結果です…。

今後も継続してPHP7に触れ、機会があれば本ブログにて紹介できればなと、考えています。

関連記事

このエントリーをはてなブックマークに追加

コメント

エンマークが2つになる

記事読ませて頂きました。大変参考になります。少し質問させていただけましたら幸いです。

start.batを実行するとhttpd.confのSyntax Errorが出てしまうのですが、以下が怪しく

httpd.confでは LoadFile "D:\PHP\~"と記載しているのに、エラー内容では "D:\\PHP\\~"と、何故か\マークが2つになって、ファイルが無い旨のメッセージが表示されている。

Windows10(64bit)なのですがこれが原因なのでしょうか。ご教授頂けましたら大変助かります。

Re: エンマークが2つになる

> 記事読ませて頂きました。大変参考になります。少し質問させていただけましたら幸いです。
>
> start.batを実行するとhttpd.confのSyntax Errorが出てしまうのですが、以下が怪しく
>
> httpd.confでは LoadFile "D:\PHP\~"と記載しているのに、エラー内容では "D:\\PHP\\~"と、何故か\マークが2つになって、ファイルが無い旨のメッセージが表示されている。
>
> Windows10(64bit)なのですがこれが原因なのでしょうか。ご教授頂けましたら大変助かります。

コメントありがとうございます。返信が遅れてしまいました…。

特に検証していないのですが、ためしに、ファイル区切りをスラッシュ( / )にしてみたらどうでしょうか。

恐らく

私も質問者さんと同様の事象が発生しましたが、
以下のサイトからダウンロードおよびインストールが一部漏れていたことがわかりました。

漏れていた分のダウンロードおよびインストールを行い、再度、start.batを実行した際はエラーが発生しませんでした。

(\については/にしていません。\のままの設定)

--------------------------------------
Visual C++再頒布可能ディストリビューションのダウンロード
ApacheはVC11でビルドされています。一方で、PHPはVC14でビルドされています。そのため、以下のVisual C++のコンポーネントを事前にインストールしておく必要があります。

Visual Studio 2012 更新プログラム 4 の Visual C++ 再頒布可能パッケージ
Visual Studio 2015 の Visual C++ 再頒布可能パッケージ

Re: 恐らく

コメントありがとうございます。なるほどですね。
ご報告ありがとうございます!

> 私も質問者さんと同様の事象が発生しましたが、
> 以下のサイトからダウンロードおよびインストールが一部漏れていたことがわかりました。
>
> 漏れていた分のダウンロードおよびインストールを行い、再度、start.batを実行した際はエラーが発生しませんでした。
>
> (\については/にしていません。\のままの設定)
>
> --------------------------------------
> Visual C++再頒布可能ディストリビューションのダウンロード
> ApacheはVC11でビルドされています。一方で、PHPはVC14でビルドされています。そのため、以下のVisual C++のコンポーネントを事前にインストールしておく必要があります。
>
> Visual Studio 2012 更新プログラム 4 の Visual C++ 再頒布可能パッケージ
> Visual Studio 2015 の Visual C++ 再頒布可能パッケージ

ファイルが無い旨のエラーが発生する件について

本日、別の環境にて、PHP7をインストールしたところ、Visual Studio 2015の再頒布可能パッケージのインストールをし忘れていて、一番最初に質問していただいた方と同様の現象が発生することを確認できました。

結論としては、

> Visual Studio 2012 更新プログラム 4 の Visual C++ 再頒布可能パッケージ
> Visual Studio 2015 の Visual C++ 再頒布可能パッケージ


をインストールしましょう、と言えるかと思います。dllをロードする過程で失敗する=ファイルが無いのも同然、みたいなことで、”ファイルが無いというエラーメッセージ”になるのでしょうね。

不親切といえば、不親切でしょうね…。

ありがとうございます!

とても参考になりました!
ありがとうございます。

コメントの投稿

非公開コメント

プロフィール

EZOLABブログへようこそ。
EZOLABは、札幌のソフトウェア会社です。

http://ezolab.co.jp