さっき自分のサイトで気づいたのですが、拙作プラグイン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
いまのところ対応策としてはどちらかのプラグインをオフにするしかありません。
どうもすいません。
原因と今後の対策
一応調べてみた感じでは以下のような原因がありました。
- GianismではGoogleが提供しているGoogle API PHP SDKを利用している
- Google Analyticatorも6.4ぐらいから同じSDKを利用するようになった
- 両方で同じクラスファイル読み込んでた → 同じ名前のクラス宣言すんなというエラー
以前もJetpackがFacebook PHP SDKの魔改造版を仕込んで来て、Gianismが動かなくなるという現象がありましたが、今回もそれと同じですね。
Google のPHP SDKの問題点は、require_once地獄でオートローディングじゃないので、複数のプラグインで利用した場合、バッティングを防げないんですよね。オートローディングをしてもらうしかないんですよ。
でもなんか対応する予定がなさそうなので、Forkしてから入れるかなーとか、色んなこと考えちゃいますね。
WordPressプラグインみたいな開発環境だと、requireはダメやね。
終わり。