「NP_Moblogを1.2以降にしたら動かなくなった」という報告自体はいくつかのサイトで報告があることは確認しているのですが、動かない原因の追求が進まないままになっていました。これは自分の環境で再現できない類の不具合で結局手の出し方がわからなかったことと、詳細情報がなかなか集まらないということが原因でした。
ところが、今日ひとつ解決の糸口を発見しました。
モブログ用プラグインをNP_HeelloWorldからNP_Moblogへ移行。設定する場所が「プラグイン管理」から「あなたの設定」に変わっていた。戸惑いつつ設定。試しにメールを送ってみると、
Fatal error: Call to undefined function: is_a() in /..../nucleus/plugins/moblog/PEAR.php on line 250なんてエラーが。。"
ここまで詳細*1に不具合を乗せてもらえると開発者としては非常に助かります。これで、ウチにトラックバックのひとつでもしていただければ、本当にパーフェクトでした。hisさんに感謝です。ソフトウェアを作らない方にはピンとこないかも知れませんが、たったこれだけのことで直せないバグも直せるバグになるのです。
† 原因はPHPのバージョン?
このエラーから読み取れるのはPHPにis_a()という関数が定義されていないないということです。
早速、マニュアルでis_a()を調べてみると(PHP 4 >= 4.2.0, PHP 5)という記述があります。ということは、これ以前のバージョンにはis_a()という関数がないということになり、そのような環境下では報告されている現象が発生すると考えられます。
† 解決方針
ここまでくれば僕もソフトウェアエンジニアですから、解決方針を立てることが可能になります。
上記のページを読むとわかることですが、古いバージョンのPHPでもPHP_CompatというPEARモジュールを使うことによってis_a()が使用可能であると解説されています。
ということで、この問題は解決できそうです。もちろん、is_a()以外にもPHPのバージョンによって互換性の問題は発生しうるので、もう一度そのあたりの洗い出しを行う必要はありそうです。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。