WordPress XMLRPC: Expat hata kodu 5 bildiriyor

4 Cevap php

Ben iki ayrı WordPress bloglar eşitlemek için WordPress XMLRPC kütüphanesini kullanan birkaç ay önce küçük bir PHP uygulama yazdı. Ben, istek paketleri gönderir ve sunucu yanıt verir genel bir "RPCRequest" fonksiyonu var, ve ben gönderilen istek türünü özelleştirmek çok daha fazla özel işlevleri bulunmaktadır.

Bu özel durumda, ben uzak sunucuda mesajların sayısını ve kendi postids almak için "getPostIDs" arıyorum. İşte kod:

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

Ben aşağıdaki hata iletisi alıyorum:

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:

Ayrıca garip bir çekişme biten tür. Hata mesajı XML biçimlendirilmiş değil çünkü Ama, benim sezgi bu uzak sunucu, hata değil, üreten yerel XMLRPC kütüphane olmasıdır.

Ben "getPostIDs ()" ile "getPostIDs (1)" veya diğer herhangi bir tamsayı çağrı değiştirirseniz bile yabancı, gayet güzel çalışıyor.

İşte WordRPC sınıf için kod:

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));
}

Ben de belirtildiği gibi "getPostIDs" pozitif bir tamsayı argüman verilirse, iyi çalışıyor. Ayrıca, bu çok iyi olarak çalışmak için Kullanılan; 0 varsayılan parametre sadece o değil, sadece en son $num_posts mesajlar, all mesaj almak gerekir RPC sunucusuna gösterir. Sadece son zamanlarda bu hata kadar gösteren başladı.

Ben çok şans olmadan hatayı googling denedim. Benim soru, çok açıktır ki ötesinde what exactly does "expat reports error code 5" mean, and who is generating the error? herhangi bir detay / öneri / anlayışlar vardır!

4 Cevap

@ Novak: teşekkürler öneri için. Sorun bir hafıza sorunu olduğu ortaya çıktı; Uzak yerde tüm mesajları alarak, yanıt bellek PHP miktarı bu nedenle kapatılmamış simge hata kullanmaktadır bırakıldı aştı.

Şifreli ve eksik hata mesajı ile sorun nedeniyle kullanılan XML-RPC kitaplığı eski bir sürümüne oldu. Ben WordPress sürümü yükseltilmiş ediyorum kez, o bellek hatası da dahil olmak üzere, tam hata çıktı bana sağladı.

Expat PHP XML ayrıştırıcı. Hata kodu 5, bu durumda, birçok expat hata sabitleri biridir: XML_ERROR_UNCLOSED_TOKEN. Bir hata RPC çağrısından döndürülen sonucu var gibi geliyor bana. Sen file_get_contents sonra xmlrpc_decode önce RPCRequest bazı hata denetimi yapmak isteyebilirsiniz.

ben de bu hatayı alabilirsiniz ..

bak:

object(xmlrpcresp)[74] public 'errno' => int 5 public 'errstr' => string 'Connect error: php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution (0)'

i bağlantısında problem (dns, ip adresi, hostname) düşünüyorum

Nei Rauni Santos

i apache php-xmlrpc modülünü yüklerken bu hata düzeltildi

php-xmlrpc.x86_64: XML-RPC protokolünü kullanan PHP uygulamalar için bir modül