PEAR のWindows へのインストールをするのは今回で2度目である。
しかし凄く今回は時間がかかっている。
それは前回のインストールでは、あちこちのサイトに書いてある事を見て、
深く追求せずにインストールが終わっていたが、今はある程度何をしているかわかってきたので
何をしているかこだわっている事と、前回は何を見て設定したかを甘く見てメモしていなかったので
時間がかかっている原因である。
今回は色々また調べながら、そして修正しながらのブログを用いたメモなので
途中作りかけであったり、内容が間違っている可能性も勿論ある。
今回わかった事、色々調べてみると、最終的に行き着いたのは
php.exe に読み込ませるスクリプトは2種類あり、それぞれのインストールの仕方が違う事。
その2種類はgo-pear.php と go-pear.phar である。
そのインストールの方法についてメモを残そうと思うが、まずハマる要点を先に書こう。
ハマるその①:go-pear.phar とその実行方法
インストール中のインストールするフォルダの位置指定が増えた。
1. Installation base ($prefix) : C:\php
2. Temporary directory for processing : C:\php\tmp
3. Temporary directory for downloads : C:\php\tmp
4. Binaries directory : C:\php
5. PHP code directory ($php_dir) : C:\php\pear
6. Documentation directory : C:\php\docs
7. Data directory : C:\php\data
8. User-modifiable configuration files directory : C:\php\cfg
9. Public Web Files directory : C:\php\www
10. Tests directory : C:\php\tests
11. Name of configuration file : C:\WINDOWS\pear.ini
12. Path to CLI php.exe : .
今はこの12項目があるが、昔は
8. User-modifiable configuration files directory : C:\php\cfg
9. Public Web Files directory : C:\php\www
がなく10項目であった。とりあえず、これが何を指し示しているのか
厳密にわからない。
www は普通に公開フォルダで、Apache の公開フォルダかな?
とは思うが良く判らない。
そして、パスが大体PHPのフォルダ直下ではなくて、
PHPのフォルダ直下のあとのpear のフォルダの中がデフォルトの指定だった。
こんな感じだった。
1. Installation base ($prefix) : C:\php
2. Temporary directory for processing : C:\php\pear\tmp
3. Temporary directory for downloads : C:\php\pear\tmp
4. Binaries directory : C:\php
5. PHP code directory ($php_dir) : C:\php\pear
6. Documentation directory : C:\php\pear\docs
7. Data directory : C:\php\pear\data
8. Tests directory : C:\php\pear\tests
9. Name of configuration file : C:\WINDOWS\pear.ini
10. Path to CLI php.exe :C:\php\.
PEAR 公式の
パッケージのディレクトリ構造 の説明では
なんだかよく判らないのと、このCUIの設定方法までは書いてない。
そして私が見た、2010年11月13日(土)現在では、
「ドキュメントは 2003 年 11 月 4 日に発行されたもの」と書いてありました。
特に細かくインストールの詳細は書いてない気がしました。
ハマるその②:go-pear.phar とその実行方法
Windows版のPHPのインストーラに
既存で付いているPEAR のインストール用バッチの参照先にある
go-pear.phar は正常に動かない。
とりあえずまず最初にハマるのが、動かないバグがあるPEARインストーラーで、
私の環境のPHP5.3.3(php-5.3.3-Win32-VC6-x86)でも一緒にセットになって配布されていて、
これは昔もバージョンもバグで動かなかった覚えがあり、修正されないままでいる。
このgo-pear.phar は正常に動く物が配布されているので、go-pear.phar を用いてPEAR を
インストールするのであれば、
http://pear.php.net/go-pear.phar から最新を落とすべきだろう。
勿論ダウンロードしたファイルの名前はgo-pear.phar にしてPEAR のフォルダの同一名の古い物と
置き換える。
そのダウンロードしたgo-pear.phar だが、バージョンの確認方法を記述したい。
私が落としたgo-pear.phar のバージョンは、go-pear.phar の内部を覗くと確認できるが、
ファイルのバージョンを確認するにはどうも、内部の記述を元に管理するしかない様だ。
その内部の記述でバージョンらしき物が書いてあるのは2箇所でそれをメモしておこうと思う。
<1つ目>
8674行目: * @version CVS: $Id: Common.php 282969 2009-06-28 23:09:27Z dufuz $
と書いてあり、 * PEAR_Common, the base class for the PEAR Installer としてのバージョンだ。
これはPHP5.3.3(私の今の環境:php-5.3.3-Win32-VC6-x86)では
8579行目: * @version CVS: $Id: Common.php,v 1.168 2009/03/27 19:35:47 dufuz Exp $
になっている。
ここでわかるのは、v 1.168 から 282969 になった事だ。
バージョンからリビジョンっぽい細かな表記になっているので、この場所では判りにくいが、
ここのバージョンを確認するのが一番間違えは無さそうだ。
勿論日付で見たほうが早いのかもしれない・・・
<2つ目>
まぁ同様のファイルなので<1つ目>から書かれた事から変わらないので一部省略する。
旧8686行目: * @version Release: 1.8.0
新8781行目: * @version Release: 1.9.1
これは、 * Class providing common functionality for PEAR administration classes. という
クラスのバージョンらしい。
この<1つ目>か<2つ目>のどちらかを調べれば、バージョンの違いや新しいのかなどは
確認できるだろう。
バージョンの確認方法や、新しい物を取得する方法の説明はこれぐらいにして、
このgo-pear.phar の実行方法が何をしているか調べてみる。
当初バッチファイルのgo-pear.bat を実行してPEAR をインストールすれば良いと思い、
中身を確認せず実行して動かなかったので疑問に思い、中身を調べてみた。
@ECHO OFF
set PHP_BIN=php.exe
%PHP_BIN% -d output_buffering=0 PEAR\go-pear.phar
pause
中身はこんな感じになっていて、
まず@ECHO OFF で画面にコマンドエコー やメッセージ の文字列を表示させない設定にする。
次が判りにくいが、set 関数 とは現在実行中のコマンドプロンプトのみで
環境変数の追加をする関数なので、ここでset関数 にてセットしたとしても、このコマンドが終わると
set で設定した環境変数は消えてしまう。
特にgo-pear.phar の呼び出し元のphp.exe で内部的にパスを使っているのかと思ったら、
現在の私が落としたバージョンgo-pear.phar のそうでもなくて、何もphp.ini など外部の環境を設定をせずにgo-pear.bat を実行すると
1. Installation base ($prefix) : C:\php
: (省略)
12. Path to CLI php.exe : .
の様にphp.exe のパスが通っている訳でもないので、ここでの環境変数を一時的に決める事は
何の意味も無い様だ。
しかしあえて、変わるはずも無いだろうが、
一時的な変数であるset関数コマンドを使わずにユーザー環境変数として
PHP_BIN=php.exe としてWindows に記憶させてみたが、
やはり何も変わらなかった。
つまり現状ではset関数を使っている意味が本当に良く判らない。
なのでとりあえず判り易く書き直してファイルを保存する必要は無いが、バッチファイルの内容を
書き直すと
@ECHO OFF
php.exe -d output_buffering=0 PEAR\go-pear.phar
pause
としている事がわかる。
-- 多少予断 --
もしこの先ずっと環境変数を変更したいならば環境変数を編集する事になると思う。
環境変数はユーザー環境変数と、システム環境変数があるが、
ユーザー環境変数はPEAR をインストールすると作られる PEAR_ENV.reg というファイルで
後々追加変更するが、そのファイルの中に1行
"PHP_BIN"=".\\php.exe"
を追加すれば良いと思う、
但し今の所何の意味も無い様なので一例です。
REGEDIT4
[HKEY_CURRENT_USER\Environment]
"PHP_BIN"=".\\php.exe"
"PHP_PEAR_SYSCONF_DIR"="C:\\php"
"PHP_PEAR_INSTALL_DIR"="C:\\php\\pear"
"PHP_PEAR_DOC_DIR"="C:\\php\\docs"
"PHP_PEAR_BIN_DIR"="C:\\php"
"PHP_PEAR_DATA_DIR"="C:\\php\\data"
"PHP_PEAR_PHP_BIN"=".\\php.exe"
"PHP_PEAR_TEST_DIR"="C:\\php\\tests"
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
作成途中・・・・