Windows版PHPのインストール手順、及びphp.iniの基本設定。
PHPはウェブサイトを制作するためだけでなく、PC上でテキストを処理するなど、道具として非常に有用である。 私はコマンドプロンプトやバッチを利用してPHPのコードを実行している。 ここではそういった目的を対象として説明する。
バージョンはWindows 10、PHP 8.x/7.x。
まずPHPの公式サイト PHP For Windows: Binaries and sources Releases から必要なものをダウンロードする。
ここでは PHP 8.0 VS16 x64 Non Thread Safe (php-8.0.13-nts-Win32-vs16-x64.zip)をダウンロードして話を進める。 ダウンロード後、適当なフォルダにてZIPファイルを展開する。
デフォルトでは C:\php や C:\Windows にインストールすることを想定しているようだが、ここでは以下の場所にインストールして話を進める。
D:\test\php-8.0.13-nts-Win32-vs16-x64
D:\test\php-8.0.13-nts-Win32-vs16-x64
C:\Users\ユーザー名>php -v
以上で一応PHPのコードが実行できる状態になる。
デフォルトではマルチバイト文字列(mbstring)が使えない状態になっている。 つまり、mb_ereg_replace()、mb_internal_encoding()、mb_regex_encoding() といった mb で始まる関数を実行してもエラーになる。 このままだと日本語を扱うのに不便なので、以下の手順で mbstring を有効にする。
extension_dir = "ext" extension=mbstring extension=openssl
memory_limit = 512M date.timezone = Asia/Tokyoデフォルトのメモリーサイズは128Mになっているので、足りない場合に必要に応じて増やす。 PHPのコード中に以下のように書いてもメモリーサイズを変更できる。
ini_set('memory_limit', '512M');
コマンドプロンプトで以下のコマンドを実行して internal_encoding などが表示されていればマルチバイト文字列が使える状態になっている。
C:\Users\ユーザー名>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 )
ロードされている「Dynamic Extensions(拡張モジュール)」関連は以下のコマンドで確認できる。
C:\Users\ユーザー名>php -r print_r(get_loaded_extensions()); Array ( [0] => Core [1] => bcmath [2] => calendar [3] => ctype [4] => date [5] => filter [6] => hash [7] => iconv [8] => json [9] => SPL [10] => pcre [11] => readline [12] => Reflection [13] => session [14] => standard [15] => mysqlnd [16] => tokenizer [17] => zip [18] => zlib [19] => libxml [20] => dom [21] => PDO [22] => openssl [23] => SimpleXML [24] => xml [25] => xmlreader [26] => xmlwriter [27] => mbstring [28] => Phar )
デフォルトのエンコーディングは UTF-8 で、php.ini にて変更できるが、PHPコード内で mb_internal_encoding() 関数などを使って設定もできる。 また、エラー表示も php.ini にて変更できるが、PHPコード内で error_reporting() を使って設定もできる。 この辺りは好みで設定する。
php.ini の設定が反映されていない場合は、php.ini が読み込まれていない可能性がある。 とりあえずコマンドプロンプトで以下のコマンドを入力して確認する。
C:\Users\ユーザー名>php --ini Configuration File (php.ini) Path: Loaded Configuration File: (none) Scan for additional .ini files in: (none) Additional .ini files parsed: (none)
もし、Loaded Configuration File: が (none) だと読み込まれていない。 php.ini を自分で指定して読み込ませるにはコマンドプロンプトで以下のコマンドを入力する。
C:\Users\ユーザー名>php -c D:\test\php-8.0.13-nts-Win32-vs16-x64\php.ini
コマンドが入力できない状態になるが、[Ctrl]+[C]で強制的に終了させる。 その後、再度コマンドプロンプトで上記のコマンドを入力して確認する。
C:\Users\ユーザー名>php --ini Configuration File (php.ini) Path: Loaded Configuration File: D:\test\php-8.0.13-nts-Win32-vs16-x64\php.ini Scan for additional .ini files in: (none) Additional .ini files parsed: (none)
Windows を再起動してもこの設定は有効になっている。 ちなみにコマンドのヘルプ一覧は php -h で確認できる。
C:\Users\ユーザー名>php -h