PHP5開発環境をWindowsXPで整えるための手順です。
今回は、
- PHP5
- apache2.2
- PEAR
を別個インストールしました。
基本はPHP5.0 – Ground-SunLightがとてもわかりやすいです。
引っかかっりどころを主にメモ。
【PHP】
●ダウンロードファイルを展開
「iniファイルやdllファイルをWindowsのシステムフォルダに配置する」ように書いてあるマニュアルが多いが、
Windows環境変数[Path]にphpのディレクトリを登録しておけば移動しなくてもOK。
(なるべくシステムフォルダはいじりたくないものです。)
★環境変数を設定したあとは再起動が必要。
php.iniの編集
extension_dir = "E:/php5/ext" include_path=".;E:/php5/includes;E:/php5/PEAR"
extension_dirのディレクトリもinclude_pathのディレクトリも / 区切り。
(include_pathはphp.iniの例示が\になっていて、はまり込んだ)
●今回使用したextension
extension=php_mbstring.dll extension=php_openssl.dll extension=php_tidy.dll
●mbstringの設定 – phpで扱う文字コードをUTF-8で統一
mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = auto mbstring.http_output = UTF-8 mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none
【apache2.2系にPHPの設定】
httpd.conf
LoadModule php5_module "E:/php5/php5apache2_2.dll" <ifModule mod_php5.c> AddType application/x-httpd-php .php .php5 PHPIniDir "E:/php5" </ifModule>
拡張子やiniファイルディレクトリの設定はよいとして
LoadModuleに注意。
Apache2.2系なので
php5apache2.dll ではなく php5apache2_2.dll をLoadする必要があります。
間違えるとApacheが起動してくれません(><)
【PEAR】
今回、HTTP_REQUESTを使用したかったのでPEARもインストール。
本来であれば、phpインストール時についてくる go-pear.bat を実行すればよいだけなのですが
PHPのバージョンによっては
go-pear.batで実行される go-pear.phar モジュールが壊れている場合があるようで
最新の go-pear.phar モジュールをダウンロード( http://pear.php.net/go-pear )して
自身がインストールしたものと置き換える必要があります。
PHP5.2.0のgo-pear.batは壊れているっぽい – Do You PHP はてな
※PHP5.2.5(php-5.2.5-Win32.zip)のgo-pear.batは正常に動作します。
[プロキシを介してインターネットに接続している場合]
http://pear.php.net/go-pear のソースコードをphpファイルとして保存し、
> php -f E:\php5\PEAR\go-pear.php
で実行。
実行途中で
> HTTP proxy (http://user:password@proxy.myhost.com:port), or Enter for none::
ときかれるのでEnterを押さずにプロキシを指定してインストールを続けます。
【PEARモジュールインストール】
コマンドラインを使用してPEARのコマンドを実行します。
今回は HTTP_REQUESTモジュールをインストールします。
>pear install HTTP_REQUEST
でOK。
[プロキシを介してインターネットに接続している場合]
先にconfigにプロキシを設定しておく必要があります。
>pear config-set http_proxy http://your_proxy:8888
このあとインストールコマンドをたたけばOKです。
プロキシ設定している環境では色々と設定が増えますが、
上記で一通り、PHPの開発環境はそろいます。
(DBはインストールしていませんが・・・・)