PHP Windows版のインストール、php.iniの設定、マルチバイト文字列(mbstring)を有効にする。

更新:

Windows版PHPのインストール。php.iniの設定、拡張モジュール、マルチバイト文字列(mbstring)を使えるようにする。
対象 : Windows 10、PHP 7.x/5.x

PHP Windows版

PHPはテキスト処理などに便利なので、私はWindows上でも使っている。
Apacheなどウェブサーバーは使わず、コマンドプロンプトやバッチ(.bat)でPHPのコードを実行している。
ここではその設定の手順を記す。


ダウンロード

まず http://windows.php.net/download/ から必要なものをダウンロードする。
ここでは PHP 7.0.12、VC14 x86 Non Thread Safe(php-7.0.12-nts-Win32-VC14-x86.zip)をダウンロードしたとして話を進める。
PHP 5.x系も手順は同じ。
ダウンロード後、zipファイルを展開(解凍)する。


置く場所

デフォルトでは C:\php や C:\Windows にPHP関連のファイルを置くことを想定しているようだが、ここでは以下の場所に置いたとして話を進める。
D:\test\php-7.0.12-nts-Win32-VC14-x86
展開したファイルを D:\test に置いた。


環境変数 PATHの設定

  1. [コントロールパネル]→[システムとセキュリティ]→[システム]と進み、画面左にある[システムの詳細設定]をクリックする。
    その後、表示されたウィンドウの[環境変数]ボタンをクリック。
    環境変数は「ユーザー環境変数」と「システム環境変数」があるが、ここでは「ユーザー環境変数」に設定する。
    ちなみに最新の Windows 10 は、複数のPathをつなげて書く必要がなくなり、個別に追加、編集できるようになっている。
  2. 「ユーザー環境変数」の一覧に「Path」がある場合は「Path」を選択した後[編集]ボタンをクリックし、次のウィンドウで[新規]ボタンをクリックし、パスを入力する。
    変数の一覧に「Path」がない場合は[新規]ボタンをクリックして、変数名に「Path」、変数値にパスを入力する。
    ここでは上述のフォルダにパスを通したいので以下の値(パス)を入力した。
    D:\test\php-7.0.12-nts-Win32-VC14-x86
    
  3. 環境変数設定後、コマンドプロンプトで以下のように入力してPHPのバージョンが表示されればパスは通っている。
    C:\Users\Nanashi>php -v
    
以上で一応PHPのコードが実行できる状態になる。


php.ini の設定、マルチバイト文字列(mbstring)を有効にする

デフォルトではマルチバイト文字列(mbstring)が使えない。
つまり、mb_ereg_replace()、mb_internal_encoding()、mb_regex_encoding() などが無効になっている。
日本語(マルチバイト文字列)を処理できないと不便なので、php.ini の設定を変更する。

  1. 展開したフォルダの中に php.ini-development と php.ini-production があるが、php.net は php.ini-production をオススメしているので、ここではこれを使う。
  2. php.ini-production をコピーして php.ini にリネームし、同じフォルダに置く。
  3. php.ini をテキストエディタで開いて以下の箇所を探してコメント(; セミコロン)を外して有効にする。
    extension_dir = "ext"
    
    extension=php_mbstring.dll
    
  4. その他、使用可能なメモリー、タイムゾーンなども設定しておくと良い。
    これらのせいで警告やエラーが出る場合がある。
    memory_limit = 512M
    
    date.timezone = Asia/Tokyo
    
    デフォルトのメモリーサイズは128Mになっているので、足りない場合に必要に応じて増やす。
    PHPのコード中に以下のように書いてもメモリーサイズを変更できる。
    ini_set('memory_limit', '512M');
    

コマンドプロンプトで以下のコマンドを入力して internal_encoding などが表示されていればマルチバイト文字列(mbstring)が使える。
C:\Users\Nanashi>php -r print_r(mb_get_info());
Array
(
    [internal_encoding] => UTF-8
    [http_output] => UTF-8
    [http_output_conv_mimetypes] => ^(text/|application/xhtml\+xml)
    [func_overload] => 0
    [func_overload_list] => no overload
    [mail_charset] => UTF-8
    [mail_header_encoding] => BASE64
    [mail_body_encoding] => BASE64
    [illegal_chars] => 0
    [encoding_translation] => Off
    [language] => neutral
    [detect_order] => Array
        (
            [0] => ASCII
            [1] => UTF-8
        )

    [substitute_character] => 63
    [strict_detection] => Off
)
デフォルトのエンコーディングは UTF-8 で、php.ini にて変更できるが、PHPコード内で mb_internal_encoding() など関数を使って設定もできる。
また、エラー表示も php.ini にて変更できるが、PHPコード内で error_reporting() を使って設定もできる。
この辺りは好みで設定する。


php.ini の設定が反映されない

php.ini の設定が反映されていない場合は、php.ini が読み込まれていない可能性がある。
とりあえずコマンドプロンプトで以下のコマンドを入力して確認する。
C:\Users\Nanashi>php --ini
Configuration File (php.ini) Path: C:\WINDOWS
Loaded Configuration File:         (none)
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)
もし、Loaded Configuration File: が (none) だと読み込まれていない。
php.ini を自分で指定して読み込ませるにはコマンドプロンプトで以下のコマンドを入力する。
C:\Users\Nanashi>php -c D:\test\php-7.0.12-nts-Win32-VC14-x86\php.ini
コマンドが入力できない状態になるが、[Ctrl]+[C]で強制的に終了させる。
その後、再度コマンドプロンプトで上記のコマンドを入力して確認する。
C:\Users\Nanashi>php --ini
Configuration File (php.ini) Path: C:\WINDOWS
Loaded Configuration File:         D:\test\php-7.0.12-nts-Win32-VC14-x86\php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)
以上で設定終了。
Windows を再起動してもこの設定は有効になっている。
ちなみにコマンドのヘルプ(一覧)は php -h で表示される。
C:\Users\Nanashi>php -h
このエントリーをはてなブックマークに追加