Nucleus3.22でうまくpingができない場合

Webネタ・サイト更新

 NucleusでのPingエラー関連の情報を探していたら、更新pingその後 – ぷちパワ/w.ZeRoというサイトで、対処方法を見つけました。
 なんでも原因は、Nucleusからのping時のxmlに、<![CDATAが含まれることらしい。これは、Nucleusの3.22に含まれるxmlrpc.inc.phpの問題で、オリジナルのxmlrpc.incには含まれていないそうな。Nucleusで何か問題があったのかね。
 上記サイトでは、最新版のxmlrpc.incファイルを入手して修正する方法を紹介していますが、それはちょっと怖いので、Nucleus 3.22に含まれるxmlrpc.inc.phpファイルを修正することにします。

xmlrpc.inc.phpとNP_Sendpingの修正方法

/nucleus/libs/xmlrpc.inc.php
の1665行目付近

class xmlrpcval
{
var $me=array();
var $mytype=0;
function xmlrpcval($val=-1, $type='')
{
global $xmlrpcTypes;
$this->me=array();
$this->mytype=0;
if ($val!=-1 || !is_int($val) || $type!='')
{

class xmlrpcval
{
var $me=array();
var $mytype=0;
var $mode=0;   //add by SakuraCandle
//  function xmlrpcval($val=-1, $type='')
function xmlrpcval($val=-1, $type='',$mode=0) // change by SakuraCandle
{
global $xmlrpcTypes;
$this->me=array();
$this->mytype=0;
$this->mode = $mode;  // add by SakuraCandle
if ($val!=-1 || !is_int($val) || $type!='')
{

に変更。
1834行目

case $xmlrpcString:
// G. Giunta 2005/2/13: do NOT use htmlentities, since
// it will produce named html entities, which are invalid xml
// $rs.="<${typ}>" . xmlrpc_encode_entitites($val). "";
// $rs.="<${typ}>" . htmlentities($val). "";
// N. Leenheer 2005/6/30: Use CDATA instead...
$rs.="<${typ}><![CDATA[" . mb_convert_encoding($val, $xmlrpc_defencoding, _CHARSET). "]]>";
break;

case $xmlrpcString:
// G. Giunta 2005/2/13: do NOT use htmlentities, since
// it will produce named html entities, which are invalid xml
// $rs.="<${typ}>" . xmlrpc_encode_entitites($val). "";
// $rs.="<${typ}>" . htmlentities($val). "";
// N. Leenheer 2005/6/30: Use CDATA instead...
// $rs.="<${typ}><![CDATA[" . mb_convert_encoding($val, $xmlrpc_defencoding, _CHARSET). "]]>";
// break;
if (!$this->mode){  //change by SakuraCandle
$rs.="<${typ}><![CDATA[" . mb_convert_encoding($val, $xmlrpc_defencoding, _CHARSET). "]]>";
} else {
$rs.="<${typ}>".mb_convert_encoding($val, $xmlrpc_defencoding, _CHARSET). "";
}
break;       // change end

へ。
NP_SendPing 0.7もこれにあわせて修正します。
83行目

$ping_info = new xmlrpcmsg(
'weblogUpdates.ping',
array(
new xmlrpcval($name, 'string'),
new xmlrpcval($updateurl, 'string')
)
);

$ping_info = new xmlrpcmsg(
'weblogUpdates.ping',
array(
//    new xmlrpcval($name, 'string'),
//    new xmlrpcval($updateurl, 'string')
new xmlrpcval($name, 'string',1),
new xmlrpcval($updateurl, 'string',1)
)
);

に変更。
 早速pingしてみると、

[juntwo] Ping Message:http://www.blogpeople.net/servlet/weblogUpdates - Results:Thanks for the ping.
[juntwo] Ping Message:http://ping.myblog.jp/ - Results:Thanks for the ping. 

 おぉ、成功したよ。これで様子を見よう。

gooブログ検索へのping

 どうも、gooブログの場合、linkタグでのrssファイルへのアドレス指定は、サイトアドレスから指定しないとだめなようです。
 もし、
<link rel=”alternate” type=”application/rss+xml” title=”RSS” href=”xml-rss2.php” />
 となっていたら、
<link rel=”alternate” type=”application/rss+xml” title=”RSS” href=”<%sitevar(url)%>xml-rss2.php” />
 のように変更してください。
 これでうちは、gooブログ検索にタイトルが出てくるようになりました。

サクラキャンドル

 都内在住。理系高校理系大学を経て、電機関係の会社でリーマンやってます。
 仕事内容とサイトの内容はほとんど関係がなく、趣味の延長線上でいろいろと紹介します。

サクラキャンドルをフォローする
スポンサーリンク
農場主の日常

コメント

  1. 南天dub より:

    Nucleusで更新pingを送る

    blogに新しい記事を投稿したときに、記事を収集している場所に「更新したから見てね」という合図を送るのが、更新ping
    国内でもこんなサイトはたくさんあって、さまざまなblogが更新されたかチェックしてます…

  2. 福ろぐ より:

    NP_Sendping で正常にPINGが送れない場合の対処方法

    NP_SendpingはNucleusに付属しているxmlrpcライブラリを使用してPingを送信していますが、それをそのまま利用するとPingを受け付けてくれない場合が多くあります。
    解決策としては二つ方法があります。それを…

  3. OPEN SOURCE より:

    googleにPing送信。

    このブログでは福ろぐ様のNP_Sendpingを利用させて頂いているんですが、
    googleにPing送信できることを知ったので、設定してみたところ…
    Ping Message:http://blogsearch.google.co.jp/ping/RPC2 – Results:The si…

タイトルとURLをコピーしました