• 解決済 maxcyber1

    (@maxcyber1)


    zipaddr-jpプラグインエラーについて

    Notice: unserialize(): Error at offset 0 of 1 bytes in /home/cyber/domains/public_html/wp-content/plugins/zipaddr-jp/zipaddr.php on line 5

    のエラーが出ましたのでzipaddr.phpの

    $param= unserialize( get_option(zipaddr_DEFINE) );

    $param= unserialize( get_option(’zipaddr_DEFINE’) );

    に修正しましたが、解消されません。何が悪いのでしょうか?



6件の返信を表示中 - 1 - 6件目 (全6件中)
  • 何を期待してどう動かないのかわかりませんが、プラグイン開発者に問い合わせてみるのも良いかなともいます。

    このプラグインの開発者は、下記の末尾のリンク先にウェブサイト情報があるので、そこを参考にすると問い合わせできそうに思います。https://ja.wordpress.org/plugins/zipaddr-jp/

    ソースのget_option()付近の括弧が対応していませんが、それはソースそのものですか?

    すみません。見間違いでした。

    PHPのunserializeがError at offsetエラーが起きた際の対処方法あたりを参考にしてみてはいかがでしょうか?

    なお、zipaddrjpプラグインのソースコードを覗いてみましたが、下記の従来記載が正しいです。zipaddr_DEFINEは、
    zipaddr-jp.php:define(‘zipaddr_DEFINE’, ‘zipaddr_define’);
    で定義されているので、defineの場合には、echo zipaddr_DEFINE; のようにシングルやダブルクォーテーションを使わずに利用するため。

    $param= unserialize( get_option(zipaddr_DEFINE) );

    またすでに回答があるように、エラーがでているのは、このプラグインによってWordPress に保存されたデータの読み取ると、シリアル化されたデータではないよというエラーのようにみえます。

    その場合のエラー処理がこのプラグインにはないのが問題だと思いますね。たとえばそれがなかった $paramにデータなしの場合、どうするのかという点が気になります。ソースはかなりベタ打ちっぽいコーディングをしているので、動くかどうかわかりませんが、

    $param= @unserialize( get_option(zipaddr_DEFINE) );
    if($param === false){
    $param = array();
    }

    とするなど シリアライズをもとに戻すときにエラーになったら、エラーではなく、空配列をいれておくという手もあります。ただそうすると次の foreach はスキップになるので、それ以下が正しく動作するかどうかはわかりません。

    トピック投稿者 maxcyber1

    (@maxcyber1)

    上記1発でエラーがなくなりました。
    問題なく動作もしております。本当にありがとうございます!
    さすがです。今後共よろしくお願い申し上げます。

    プラグインがアップデートすると元に戻ってしまいますので、プラグインのフォーラムで開発者に報告することをお勧めします。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「zipaddr-jpプラグインエラーについて」には新たに返信することはできません。