Syndicate this site ATOM (XML) Syndicate this site RSS 2.0 (XML)

« at 新疆吐魯番 on 04/Aug/1999 | Blog's TOP | at 新疆烏魯木斉 on 05/Aug/1999 »

movabletype XML-RPC 002

Posted by snotch at May 31, 2003 3:46 PM

PHP における XML-RPC 利用の準備

XML-RPC の利点のひとつには、クライアント(サーバしかり)の記述言語が通信相手に左右されないということがある。Movabletype の XML-RPC インタフェースは Perl によって記述されているが、これを利用するクライアントはどの言語で記述されていようが問題ない。 今回は、PHPでXML-RPCクライアント・サーバを動かすための準備を行ってみたい。PHP における XML-RPC の実装について調べてみると、いくつもの実装が用意されていて、どれを選んでよいのかわかりにくい。代表的な実装と、それぞれの特徴は次の表のとおり。


実装特徴
PHP付随の
拡張パッケージ
http://xmlrpc-epi.sourceforge.net/
PHP本体バージョン 4.1.0 以降に、XML-RPC 拡張モジュールとして付随しているもの。現在のところ(バージョン 4.3.2)まだ実験段階であり、デフォルトでは有効となっていない。実装部分がC言語で記述されているので速度面で有利。
Usefulinc
XML-RPC CLASS
XML-RPC for PHP Homepage
もともと、UsefulincのEdd Dumbillが開発したもので、市販本の中には、この実装クラスを利用した例を多く見かける。便利なクラス群のおかげで、クライアント、サーバの記述が簡単に行える。
PEAR
XML-RPC Package
http://pear.php.net/package-info.php?pacid=17
上記の、Usefulinc XML-RPC CLASSを、Stig BakkenがPHP PEARへ移植を行ったもの。完成度が高く、広く利用されている。

PHP本体にソースコードとともに付随している XML-RPC 拡張パッケージは、しばらくのあいだ開発・管理が行われていないようなので、将来性やセキュリティ面に不安が残るし、現時点では基本的な関数しか用意されていないことから、あまりお勧めできない。現時点でのお勧めはPEAR のXML-RPC パッケージである。Usefulinc XML-RPC CLASSと同様にクラス群が充実していることに加え、PEARを使ったパッケージ管理、インストールが楽なところもよい。

PEAR XML-RPCパッケージの準備

現バージョン 4.3.2では、コンパイル時において --without-pear を指定しない限り、デフォルトで PEAR XML-RPC パッケージがインストールされるようになっている。PEAR XML-RPC パッケージの有無を確認するには、サーバにログインしてシェルから、

# pear list
Installed packages:
===================
Package        Version State
Archive_Tar    0.9     stable
Console_Getopt 1.0     stable
DB             1.3     stable
HTTP           1.2     stable
Mail           1.0.1   stable
Net_SMTP       1.0     stable
Net_Socket     1.0.1   stable
PEAR           1.1     stable
XML_Parser     1.0.1   stable
XML_RPC        1.0.4   stable

と実行し、Packageの列にXML_RPCがリストされていれば、既にインストールされている。
もし、リストされていない場合には、新規インストールを行うコマンドを実行する。

# pear install XML_RPC

また、バージョンが古い場合(現在バージョン1.0.4)には、

# pear upgrade XML_RPC

としてやれば、最新バージョンのものに置き換えられる。

コンパイル時に、PEARインストールディレクトリを指定するパラメータを変更していなければ、

  • /usr/local/lib/php/XML/PRC.php
  • /usr/local/lib/php/XML/PRC/Server.php

の2ファイルが、上記のパスに保存されているはずである。
デフォルトでは、 /usr/local/lib/php がインクルードパスとして指定されているので、それぞれのパッケージを利用するためには、


Warning: require_once(XML/RPC.php): failed to open stream: No such file or directory in /home/blog/mt/sunouchi/archives/2003/05/movabletype_xml_1.php on line 128

Fatal error: require_once(): Failed opening required 'XML/RPC.php' (include_path='.:/usr/local/lib/php') in /home/blog/mt/sunouchi/archives/2003/05/movabletype_xml_1.php on line 128