我写了一个小小的 PHP 申请几个月前,使用 WordPress XMLRPC library 同步两个单独的WordPress博客。我有一般的"RPCRequest"功能,包请求,发送和返回的服务的响应,我有几个具体的功能,定义类型的请求,发送。

在这种特定情况下,我呼吁"getPostIDs"检索该数额远程服务器上的和他们各自的postids.这里是代码:

$rpc = new WordRPC('http://mywordpressurl.com/xmlrpc.php', 'username', 'password');
$rpc->getPostIDs();

我收到以下错误信息:

expat reports error code 5
description: Invalid document end
line: 1
column: 1
byte index: 0
total bytes: 0

data beginning 0 before byte index: 

样的一个扣人心弦的结束,这也是奇怪的。但是,由于错误消息的不是格式化,XML,我的直觉是,它是本地XMLRPC库,是产生错误的,不远程服务器。

即使是陌生人,如果我改变"getPostIDs()"呼吁"getPostIDs(1)"或任何其他整数,它工作得很好。

这里是代码WordRPC类:

public function __construct($url, $user, $pass) {
  $this->url = $url;
  $this->username = $user;
  $this->password = $pass;

  $id = $this->RPCRequest("blogger.getUserInfo",
                          array("null", $this->username, $this->password));
  $this->blogID = $id['userid'];
}

public function RPCRequest($method, $params) {
  $request = xmlrpc_encode_request($method, $params);
  $context = stream_context_create(array('http' => array(
                    'method' => "POST",
                    'header' => "Content-Type: text/xml",
                    'content' => $request
  )));

  $file = file_get_contents($this->url, false, $context);
  return xmlrpc_decode($file);
}

public function getPostIDs($num_posts = 0) {
  return $this->RPCRequest("mt.getRecentPostTitles",
                            array($this->blogID, $this->username,
                            $this->password, $num_posts));
}

正如我所提到的,它工作得很好如果"getPostIDs"给出一个积极的整数参数。此外,这种使用的完美的工作以及为;默认的参数为0只是表明RPC服务器,它应该检索 所有 员额,而不仅仅是最近的 $num_posts 员额。只是最近才有这样的错误开始显示出来。

我已经试过谷歌上搜索的错误没有太多的幸运。我的问题是 究竟是什么"外籍人士报告的错误代码5"的意思是,谁是产生错误? 任何详细资料/建议/见解之外,欢迎!

有帮助吗?

解决方案

@*诺瓦克:谢谢你的建议。问题竟然被一个记忆的问题;通过检索所有的员额从遥远的位置,响应超过量存储器PHP被允许利用,因此未关闭令的错误。

这个问题的神秘和不完全的错误消息是由于一个过时的版本的XML-RPC图书馆使用。一旦我升级的版本主,它给我们提供了完全错误的输出,包括存储器的错误。

其他提示

我固定的这一错误installing php-xmlrpc模块上apache

php-xmlrpc.x86_64:一个模块,用于PHP应用其使用XML-RPC协议

外籍是XML parser in PHP.错误代码5是一个许多外籍人士的错误常数,在这种情况下: XML_ERROR_UNCLOSED_TOKEN.听起来好像有一个错误的结果返回自RPC的呼吁。你可能想要做一些错误在检查RPCRequest后 file_get_contents 和之前 xmlrpc_decode.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top