movabletype XML-RPC 002
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がリストされていれば、既にインストールされている。
もし、リストされていない場合には、新規インストールを行うコマンドを実行する。
また、バージョンが古い場合(現在バージョン1.0.4)には、
としてやれば、最新バージョンのものに置き換えられる。
コンパイル時に、PEARインストールディレクトリを指定するパラメータを変更していなければ、
- /usr/local/lib/php/XML/PRC.php
- /usr/local/lib/php/XML/PRC/Server.php
の2ファイルが、上記のパスに保存されているはずである。
デフォルトでは、 /usr/local/lib/php がインクルードパスとして指定されているので、それぞれのパッケージを利用するためには、
というようにソース冒頭で宣言するだけで、PEAR XML-RPC パッケージのクラス群の使用準備は完了である。




突然のコメント申し訳ありません。福岡在住のtallyhoと申します。
先日よりインターネット上で"XML RPC"の脆弱性に関する問題が取り扱われていますが、
http://www.isskk.co.jp/security_center/xml_rpc.html
実際のコンテンツの中で"XML RPC"を使っているかどうかを判別するためには、どのようにしたらよいのでしょうか?
ネット上で検索を行った結果、当ページにたどり着きました。
Posted by: datastreamcowboy | November 10, 2005 10:02 AM
XML-RPC自体は,プログラム間でデータをやり取りする枠組みですので,XML-RPCによってデータがやり取りされていることが外から目に見えるわけではありません.よって,あるコンテンツを見て,XML-RPCが利用されているかどうかを,第3者が外から確認することは難しいです.
ただ,一部のWeblogシステムや写真共有システム等,外部に公開されたXML-RPCインタフェースを備えているシステムやサービスがあり,マニュアル等を調べれば,XML-RPCを利用しているかどうかが判ります.
いずれにしても,Web上のコンテンツでXML-RPCが使われているかどうかを正確に判断するためには,当該コンテンツのオリジナルファイル(プログラム),コンテンツが載っているサーバの設定等を確認する必要があります.
Posted by: snotch | November 10, 2005 11:52 AM