fbpx

メニュー

GianismとGoogle AnalyticatorでFatal Errorになります、すいません

高橋文樹 高橋文樹

この投稿は 10年半 前に公開されました。いまではもう無効になった内容を含んでいるかもしれないことをご了承ください。

さっき自分のサイトで気づいたのですが、拙作プラグイン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はダメやね。

終わり。

すべての投稿を見る

高橋文樹ニュースレター

高橋文樹が最近の活動報告、サイトでパブリックにできない情報などをお伝えするメーリングリストです。 滅多に送りませんので、ぜひご登録お願いいたします。 お得なダウンロードコンテンツなども計画中です。