XML-RPCのエラー修正
PHP, Tuit, WordPress May 7th, 2007
オフラインエディタでこの日記を編集しようとしたら、WordPress側のXML-RPCサーバからの応答が
「XML-RPC server accepts POST requests only.」
になっているので調べてみたが、どうやらGLOBAL変数が正しく受け取れないようになっているのが原因らしい。wp-includes/class-IXR.phpに上のエラーメッセージが書かれていたので見てみると、こんなコードになっていた。
if (!$data) {
global $HTTP_RAW_POST_DATA;
if (!$HTTP_RAW_POST_DATA) {
die('XML-RPC server accepts POST requests only.');
}
$data = $HTTP_RAW_POST_DATA;
}
理由はわからないが、ここでdieしないように
$HTTP_RAW_POST_DATA = file_get_contents(”php://input”);
これを追記して
if (!$data) {
global $HTTP_RAW_POST_DATA;
if (!$HTTP_RAW_POST_DATA) {
$HTTP_RAW_POST_DATA = file_get_contents("php://input");
if(!$HTTP_RAW_POST_DATA){
die('XML-RPC server accepts POST requests only.');
}
}
$data = $HTTP_RAW_POST_DATA;
}
ちょっとしつこくしてみたら動いた。ectoでの動作も問題なし。なんでだ!?
May 15th, 2007 at 4:33 pm
php5.2.2のバグらしいです。5.2.3では直すようです。
http://marc.info/?l=php-dev&m=117856296204233&w=2
May 15th, 2007 at 8:31 pm
切ないですね…