「先生!備忘録として・・・」

さて、最近お仕事でPHPとおつきあいさせて頂いている。*1ところが、このPHPは今までやったことがないので、その概念すらよく分からないままに使っている。ダメだねぇ。チョット知ってる人に微妙にリードしてもらっている感はあるが、やっぱり自分で調べないとね。って事で、いろいろやってみたことの備忘録。

前提条件

  1. 何故かWindows Serverを利用します
  2. PHP5.1.6とmysql server4.1がすでに他人によってインストール済です
  3. PHPのインストールパスはD:\PHPです。
  4. WWWにはWindowsApache 2.0.58を利用します。
  5. っていうか、Apacheも他人によってインストール済です。
  6. OpenPNE2.4.xが同環境下にインストール済です。

で、今回、この環境でOpenPNE等を動かしてみたり、改造してみたり、さらには外部から呼ばれるWikiパーサーを稼働させたりします。
で、Wikiパーサーを入れてほしいと言われました。Wikiパーサー自体はいろいろあるみたいなのですが、先方が指定してきたのはText_Wiki。これをインストールして使える状態にしてほしいとのこと。ほぅほぅ。どーやってインストールするんだ?(苦笑)
とりあえずググってみたけど、真っ先にヒットするのはLinux環境におけるpearコマンドでファイル指定のインストールってやつ。んー、Linuxでもないし、ファイルも取ってきたけど、.tgzで固められていて、Windows上で解凍するとファイルが壊れちゃうんですけど。
って事で、どうもWindowsでは違う方法でやる模様。
で、調べてみたところ、Windows上でもpearコマンドを使って外部から直接ダウンロードして、インストールするらしい。でも、普通pearコマンドなんて使えないよね?

D:\>pear
'pear' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

ほーらね。当然だよねぇ。って事で、じゃあpearコマンドを利用するにはどうしたらいいわけ?って事を調べると、どうもPHPをインストールした時点でgo-pear.batと言うファイルがPHPインストールフォルダ直下にあり、そのバッチを実行することにより、pearのインストールが出来るようになるみたい。で、その後はD:\PHPフォルダ配下でpearコマンドが利用可能になる模様。
って事で、早速。

  1. D:\PHP\go-pear.batを実行。
  2. 画面に表示されるメッセージに従い実行
  3. D:\PHP\PEAR_ENV.regが生成されるので、ダブルクリック実行

これで、D:\PHPフォルダ配下でpearコマンドが有効になりました。うむうむ。試しにpaer listコマンドを実行し、現在インストールされているパッケージを見てみることとする。

D:\php>pear list
INSTALLED PACKAGES, CHANNEL PEAR.PHP.NET:
=========================================
PACKAGE VERSION STATE
Archive_Tar 1.3.1 stable
Console_Getopt 1.2 stable
PEAR 1.4.9 stable

微妙に数が少ない気がするけど・・・まぁ、いいか。
じゃ、早速pear installコマンドを使ってゴキゲンにText_Wikiをインストールしようかねぇ。

D:\php>pear install Text_Wiki
No releases available for package "pear.php.net/Text_Wiki"
Cannot initialize 'Text_Wiki', invalid or missing package file
Package "Text_Wiki" is not valid
install failed

え?どーすて?どーすて?動かねぇよ。で、Webを巡回してみると・・・どうも、PHPに入っているgo-pear.pharが壊れていると言う情報を発見(参考:PHP5.2.0のgo-pear.batは壊れているっぽい)。どれどれ。と、テキストエディタでD:\PHP\PEAR\go-pear.pharを見てみると、確かに後半が読み取れない。んっふー。バージョンが違うけど、昔の奴も壊れてたんじゃン。ってことでじゃぁ・・・と、http://pear.php.net/go-pear.pharをダウンロードしてきて入れ換え、実行。

D:\php>pear install Text_Wiki
No releases available for package "pear.php.net/Text_Wiki"
Cannot initialize 'Text_Wiki', invalid or missing package file
Package "Text_Wiki" is not valid
install failed

あれー?状況変わりませんけど?んーーー、なんでだろうなぁ。他のコマンド打ってみるか・・・。

D:\php>pear list-upgrades
Connection to `pear.php.net:80' failed:

んっほ、あれ?pear.php.netに繋がらねぇとか言ってやがるじゃないか?いや、サーバからダウンロードしてきて、PEAR自体をインストールしたんじゃないの?だからサーバには繋がる状態だったんじゃないの?なんで?んー、繋がらないって言うんだったらProxy関連だと思うけどさぁ、IEの設定から拾ってくれたりしてたわけじゃないの?・・・まぁ、冷静に考えればそこまで親切なはずが無いんだけど。
って事で、pearにProxyを経由させる設定を行う。

D:\php>pear config-show
CONFIGURATION (CHANNEL PEAR.PHP.NET):
=====================================
Auto-discover new Channels auto_discover
Default Channel default_channel pear.php.net
HTTP Proxy Server Address http_proxy no
(省略)

やっぱりProxyの設定がないね。うちのProxyサーバはxxx.xxx.xxx.xxxの8080ポートだから・・・

D:\php>pear config-set http_proxy xxx.xxx.xxx.xxx:8080
config-set succeeded

どーだ?

D:\php>pear config-show
CONFIGURATION (CHANNEL PEAR.PHP.NET):
=====================================
Auto-discover new Channels auto_discover
Default Channel default_channel pear.php.net
HTTP Proxy Server Address http_proxy xxx.xxx.xxx.xxx:8080
(省略)

よしよし。んじゃ、さっき出来なかったアップグレードの一覧を取ってみようか。

D:\php>pear list-upgrades
PEAR.PHP.NET AVAILABLE UPGRADES (STABLE):
=========================================
CHANNEL PACKAGE LOCAL REMOTE SIZE
pear.php.net Console_Getopt 1.2 (stable) 1.2.1 (stable) 3.4kB
pear.php.net PEAR 1.4.9 (stable) 1.4.11 (stable) 277kB

うっしゃ、イケた。じゃ、インストールしてみるべ。

D:\php>pear install Text_Wiki
downloading Text_Wiki-1.1.0.tgz ...
Starting to download Text_Wiki-1.1.0.tgz (**** bytes)
.....done: **** bytes
install ok: channel://pear.php.net/Text_Wiki-1.1.0.tgz

うひゃ?イケたんじゃない?どれどれ見てみましょうかね

D:\php>pear list
INSTALLED PACKAGES, CHANNEL PEAR.PHP.NET:
=========================================
PACKAGE VERSION STATE
Archive_Tar 1.3.1 stable
Console_Getopt 1.2 stable
PEAR 1.4.9 stable
Text_Wiki 1.1.0 stable

おっけーおっけー、イケたイケた。じゃ、ついでにPEARの情報を提供してくれるpear_infoも落として入れよ。って事で入れといた。
じゃ、早速pear_infoでApache経由で見ることが出来るか、調べてみるか・・・。って事で、以下のようなPHPをつくってhtdocs配下においてみる。

<html>
<head>
<title>PEAR info</title>
</head>
<body>
<?php
require_once("PEAR/Info.php");
$info = new PEAR_Info();
$info->show();
?>
</body>
</html>

で、見てみる・・・が、8行目でエラーだと?

Warning: require_once(PEAR/Info.php) [function.require-once]: failed to open stream: No such file or directory in D:\Apache Group\Apache2\htdocs\test.php on line 8
Fatal error: require_once() [function.require]: Failed opening required 'PEAR/Info.php' (include_path='.;C:\php5\pear') in D:\Apache Group\Apache2\htdocs\test.php on line 8

え?include_pathが間違ってるとか言ってる?確かにC:\php5\pearなんてところを見たってないわさ。じゃ、include設定を変えてやるよ。えーーーっと、C:\Windows\php.iniをテキストエディタで開いて。。。

; Windows: "\path1;\path2"
include_path = ".;D:\php\includes;D:\php\PEAR"

include_pathの行を上記のように変更。で、見てみると・・・えっと、変わりませんが。
んーーーー、じゃあApacheのサービスをリスタートしたらどうだ?って事で、コンパネ→管理ツール→サービスからApacheのサービスをリスタート。そしたら。。。出やがりましたよコンチクショウ。
って事で、とりあえずココまでで一段落。Text_Wikiのテストもしないとイケないけど、pear_infoほど簡単じゃないから、もう少しあとで・・・って事で。ふぅ・・・。

*1:これでまた、浅いおつきあいをする言語が増えたこととなる。まったく入社以来、とっかえひっかえ言語とおつきあいしてきている。一方、女性とのおつきあいはとんとない。人生って不毛だ(苦笑)