最近,我使用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吗?
答案 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;
}