Google Fatal

Hi, I detected your main language is not Japanese. I have an english version of about me, so please try it!

この投稿は3年半前の記事です。 情報が古くなっている可能性があるので、その点ご了承ください。
2014 年 1 月 8 日 1,295日前)
863文字 (読了時間2分)

SPONSORED LINK

さっき自分のサイトで気づいたのですが、拙作プラグインGianismでGoogle アカウントによるログインを有効にしている場合、Google Analyticatorというプラグインを同時に使っているとFatal Errorが発生するということがわかりました。

現象としては、ログインページが最後まで表示されず、Googleボタンの直後がすべて表示されなくなります。

エラーメッセージはこんな感じです。

PHP Fatal error: Cannot redeclare class URI_Template_Parser in /path/to/wp-content/plugins/gianism/sdks/google/external/URITemplateParser.php on line 30

いまのところ対応策としてはどちらかのプラグインをオフにするしかありません。

どうもすいません。

原因と今後の対策

一応調べてみた感じでは以下のような原因がありました。

  1. GianismではGoogleが提供しているGoogle API PHP SDKを利用している
  2. Google Analyticatorも6.4ぐらいから同じSDKを利用するようになった
  3. 両方で同じクラスファイル読み込んでた → 同じ名前のクラス宣言すんなというエラー

以前もJetpackがFacebook PHP SDKの魔改造版を仕込んで来て、Gianismが動かなくなるという現象がありましたが、今回もそれと同じですね。

Google のPHP SDKの問題点は、require_once地獄でオートローディングじゃないので、複数のプラグインで利用した場合、バッティングを防げないんですよね。オートローディングをしてもらうしかないんですよ。

でもなんか対応する予定がなさそうなので、Forkしてから入れるかなーとか、色んなこと考えちゃいますね。

WordPressプラグインみたいな開発環境だと、requireはダメやね。

終わり。

 

SPONSORED LINK

この記事について

この記事はが2014 年 1 月 8 日にプログラミングの記事として公開しました。

フォローしてください

ここで会ったのもなにかの縁。
高橋文樹.comの最新情報を見逃さないためにもフォローをお願いします。
めったに送らないメルマガもあります。