XML-RPC server accepts POST requests only – WordPress Error

Lost an hour today to trying to debug Ecto posting to this weblog (if you’re not using Ecto, you should consider it).

I was constantly getting this error:

XML-RPC server accepts POST requests only

Finally I wrote up a nice little support ticket for Dreamhost with all the details. Surprisingly I got the fix back in relatively short order.

I was wondering what the problem with WordPress was. It turned out to be a PHP 5.2.2 bug. The file xmlrpc.php is broken under PHP 5.2.2. As WordPress is the weblog system in widest use in the entire world, it would be nice if the PHP team would get with the real world and debug their releases before rolling them out.

The solution, for now, is to edit the xmlrpc.php file in your WordPress installation and add the following code:


if (phpversion()=="5.2.2") $GLOBALS['HTTP_RAW_POST_DATA'] =
file_get_contents("php://input");


The beginning of my xmlrpc.php file looks like this:


define('XMLRPC_REQUEST', true);

// Some browser-embedded clients send cookies. We don't want them.
$_COOKIE = array();

if (phpversion()=="5.2.2") $GLOBALS['HTTP_RAW_POST_DATA'] =
file_get_contents("php://input");


And XMLRPC is now working again.

I made this fix and now Ecto works a charm again. Alas, this isn’t the first time a PHP error has brough XMLRPC/Ecto down on WordPress weblogs.

A number of things went wrong here:

  1. the PHP developers dropped the ball on their debugging
  2. Dreamhost dropped the ball rolling out 5.2.2 with such a bug in it
  3. Dreamhost dropped the ball a final time by not proactively notifying all its customers who are running WordPress weblogs about this bug

I’ve made this post as I was unable to find any useful information about the XML-RPC serve accepts POST requests only bug when searching Google for that phrase plus WordPress and plus Ecto. I hope other unfortunates find this post more quickly than I found the solution.

This entry was posted in WordPress. Bookmark the permalink.

17 Responses to XML-RPC server accepts POST requests only – WordPress Error

  1. Jason.

    http://wordpress.org/support/topic/117421

    Google “XML-RPC server accepts POST requests only” wordpress

    Sometimes being too specific is the wrong direction.

  2. Thank you for posting this – it worked for me too!

  3. Thanks, this works for me :)

  4. Wow you have saved me such a head ache..

  5. Thanks! Tengo la solucian ahora!

  6. Jen

    Thanks for your post. It fixed the problem and I’m able to use ecto again.

  7. mark

    Still can’t get it to work, can’t get rid of this ‘XML-RPC server accepts POST requests only.’

    What do I do?

  8. Hi Mark,

    This may have changed in the latest WordPress (2.7+) as the external posting functionality has been enhanced. If you figure it out, please let me know so I can update our information to cover the latest versions.

  9. trent

    Same error, but the above doesn’t fix. Have WordPress version 2.5.1 with PHP 5.2.3.

    I’m trying to use Windows Live Writer to post to my wordpress site, but it says:

    The server reported an error with the following URL:
    …/xmlrpc.php
    403 Forbidden

    When I go to my xmlrpc.php page it says:
    XML-RPC server accepts POST requests only.

    Ideas?

  10. Martin

    Hello trent,

    upgrade from 2.5.1 to 2.8 shouldn’t be that hard, so I would recommend you to do that. Not only the XML RPC will work, but your blog will be more secure.

    Thanks,
    M.

  11. uttam

    I am using PHP version 4.2.3
    Is there any problem for working of XML-RPC ?

  12. Why

    Sorry, but the above doesn’t fix. Have WordPress version 3.0 with PHP 5.2.5.

    I’m trying to use Windows Live Writer to post to my wordpress site, but it says:

    The server reported an error with the following URL:
    …/xmlrpc.php
    Forbidden

    When I go to my xmlrpc.php page it says:
    XML-RPC server accepts POST requests only.

    Why?

  13. Hi Why,

    It’s probably a permissions issue. Let us know how/if you solve it.

    Thanks.

  14. Why

    Yes?I think it’s the permissions issue, because “always_populate_raw_post_data” is off, thank you.

  15. Hello Why,

    this fix is 2 years old, it’s for older WordPress versions. It doesn’t seem to occur on WordPress 3.0.

    If you get “XML-RPC server accepts POST requests only.” when you access xmlrpc.php via browser, that’s ok.

    Is “Forbidden” really the whole error message you get? You can try to disabled mod_security by placing the following into .htaccess:


    SecFilterRemove 114

    Looks like some people with iPhones have this issue: http://iphone.forums.wordpress.org/topic/403-forbidden

    Hello uttam,

    no, that should not make any difference, if you are on a new WP (which is PHP > 4.3 only, so I would try to update both PHP and WP first).

    Thanks,
    Martin

  16. Fadil

    This did not work for me. I want mine to ACCEPT ALL REQUESTS….how do I do that?

Leave a Reply