PHP7.1になって色々代わったという話だったので、古い話題過ぎますが久々にphpのローカル実行環境を整えてみました。
ネット情報ではMac版が多いのか、Windows版で発生するエラーに関しては、未記述だったりまとまってなかったりしたのでまとめておきます。
なお管理人の環境はWindows7(64bit)です。
実行環境の選択
昔はXAMPPなどがあったのですが、PHP5.4から「ビルトインWebサーバー」が実装されたため、データベースなどを使わない場合はPHPだけで動作環境が手に入る用になりました。
あまりごちゃごちゃ入れたくない人はPHPだけを入れるといいでしょう。
PHPのダウンロード
PHP For Windows: Binaries and sources Releases
http://windows.php.net/download/
4種類ありますが、難しい話はさておきとりあえず「Thread Safe」の物を選んでおくといいでしょう。
「PHP 7.1 (7.1.10)」の一番下のZipファイルをダウンロード後、C:\PHPなどのディレクトリに展開します。
管理人が試した際には「VC14 x64 Thread Safe (2017-Sep-26 23:04:10)」(23.44MB)が最新でした。
なお環境変数のPATHにPHPのパスを通しておくと、PHP実行時にいちいちフルパスを指定する必要がなくなります。
環境変数の設定がわからない場合は、PHP実行時に「C:\php\php.exe」と打てばいいだけです。ブラウザで軽くテストするだけであれば、バッチファイルを作って実行するようにすれば特に環境変数に入れなくても困らないかもしれません。
Visual C++ランタイムのダウンロード
ネット情報では、続いてコマンドプロンプトでphpを実行するとなっています。
さてPHPを起動してみましょう。コマンドプロンプトで「php」と実行してみますが、ここでいきなりエラーが発生します。
VCRUNTIME140.dllがないため、プログラムを開始できません。
Visual C++のランタイムライブラリが必要なようです。これはMicrosoftのサイトからダウンロードできます。
Download Visual Studio 2015 の Visual C++ 再頒布可能パッケージ from Official Microsoft Download Center
https://www.microsoft.com/ja-jp/download/details.aspx?id=48145
ダウンロード後実行すればインストール完了します。
php.iniのコピー
気を取り直してPHPを起動します。
しかしまだエラーが出ます。
Fatal error: Directive ‘allow_call_time_pass_reference’ is no longer available in PHP in Unknown on line 0
PHPを起動しているだけなので意味不明に思えますが、結局は「php.iniがありません」というエラーでした。
そこでPHPをインストールしたフォルダを開き、「php.ini-development」または「php.ini-production」のいずれかをコピーした上で、「php.ini」とリネームします。
これでようやくPHPが起動します。
PHP 7.1.10 (cli) (built: Sep 26 2017 20:04:32) ( ZTS MSVC14 (Visual C++ 2015) x64 )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
しかし、これではまだ設定は終わってません。
ネットなどに置かれているPHPプログラムを走らせると、恐らくいろいろなエラーが出てしまい実行できないということになります。
php.iniの編集
まずいちばん多いのがmbstring関連だと思われます。
以下の行にある先頭のコメント「;」を削除。アンダーライン部分はデフォルト空白等になっているので追加します。
共通
738行:extension_dir = “ext”
mbstring関連
903行:extension=php_mbstring.dll
1634行:mbstring.language = Japanese
1641行:mbstring.internal_encoding = UTF-8
1649行:mbstring.http_input = pass
1659行:mbstring.http_output = pass
1667行:mbstring.encoding_translation = Off
1672行:mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
1677行:mbstring.substitute_character = none
1688行:mbstring.func_overload = 0
1692行:mbstring.strict_detection = Off
cURL関連
続いてPHPでよく使われるcURL関連も有効化しておきます。
893行:extension=php_curl.dll
SSL関連
httpsサイトが増えたおかげで、SSLも設定しておかないとエラーが出ます。
907行:extension=php_openssl.dll
1920行:openssl.cafile=C:\php\cacert.pem
1929行:openssl.capath=C:\php\cacert.pem
なおこの証明書ファイルは入ってませんでしたので、「http://curl.haxx.se/ca/cacert.pem」からダウンロードして、php.exeと同じフォルダにでも置いておきましょう。
だいたいこれでエラーがなくなり実行できるようになるのではないかと思います。
なおphp.iniを編集したあとは、Ctrl+CでPHPを終了してから再起動して反映させましょう。
PHPの起動
「コマンドプロンプト」を起動し、PHPを起動します。
php -S localhost:8000 -t /home/USERNAME/public_html
「php -S localhost:8000」までが必須です。
その後の「/home/USERNAME/public_html」は、いわゆるドキュメントルートですので指定しなくても問題ありません。しかし、いちいちフルパスで書かなきゃいけないのでテストなどで使用するPHPファイルを置いているフォルダを指定しておいた方がいいでしょう。
ここでブラウザに「localhost:8000/test.php」などと書いて実行すると、ブラウザには「test.php」の実行結果が表示され、コマンドプロンプト上でも実行ログが流れます。
以上でPHPの環境設定は完了です。これで気兼ねなくいろいろテストすることができるようになりました。