Wordpress xmlrpc无法在https中运行

时间:2015-03-26 23:39:13

标签: php wordpress symfony xml-rpc

最近,我使用SSL更新了我的网站,所有URI现在都是“https://”。

我的网站是使用Symfony 2开发的,并将一个Wordpress安装混合在Symfony 2 web/wordpress目录中。

所有常规访问都没问题。只有一个问题:

在我的Symfony 2中,有这段代码:

private function getRecentPosts($num = 4)
{
    require_once 'wordpress/wp-includes/class-IXR.php';

    $user      = '11111';
    $pwd       = '22222';

    $host='https://www.rsywx.net';
    $script='/wordpress/xmlrpc.php';
    $port=443;

    $client = new \IXR_Client($host, $script, $port);

    $params = array(0, $user, $pwd, $num);
    $client->query('metaWeblog.getRecentPosts', $params);

    $wp = $client->getResponse();

    return $wp;
}

当我的网站没有用https包装时,上面的代码工作正常。但现在它在https下,上面的代码不起作用。如果我在$client函数调用之后转储query变量,则会出现如下错误:

+error: IXR_Error {#256 ▼
    +code: -32300
    +message: "transport error - could not open socket"

任何提示?我需要调整我的WP吗?

2 个答案:

答案 0 :(得分:0)

我完全避免使用XMLRPC来解决这个问题。

在我的Symfony 2应用程序中,我只是使用第二个数据库来直接访问底层的wordpress数据库。这是一个黑客,但它暂时解决了我的问题。

答案 1 :(得分:0)

问题出现在文件 wp-includes / class-IXR.php 上,它不能与HTTPS一起使用,你还必须使用 class-wp-http-ixr -client.php 。并且不要忘记包含配置文件 wp-load.php

代码段将是:

private function getRecentPosts($num = 4) 
{
    include 'wordpress/wp-load.php';
    require_once ABSPATH . WPINC . 'wordpress/wp-includes/class-IXR.php';
    require_once ABSPATH . WPINC . 'wordpress/wp-includes/class-wp-http-ixr-client.php';


    $user      = '11111';
    $pwd       = '22222';

    //Deprecated
    /*
    $host='https://www.rsywx.net';
    $script='/wordpress/xmlrpc.php';
    $port=443;
    $client = new \IXR_Client($host, $script, $port);
    */
    $client = new WP_HTTP_IXR_CLIENT('https://www.rsywx.net/wordpress/xmlrpc.php');

    $params = array(0, $user, $pwd, $num);
    $client->query('metaWeblog.getRecentPosts', $params);

    $wp = $client->getResponse();

    return $wp;
}
相关问题