Cannot declare class ComposerAutoloaderInit〜 というエラーとその対応について

11/8にリリースした Snow Monkey Blocks v20.3.4、Snow Monkey Editor v9.3.1、Snow Monkey Forms v6.0.2 にアップデートすると、Cannot declare class ComposerAutoloaderInit〜 という Fatal Error が発生し、ページが表示できなくなるという不具合がありました。

具体的には、Snow Monkey Blocks v20.3.4、Snow Monkey Editor v9.3.1、Snow Monkey Forms v6.0.2 のうちいずれか2つが有効化されているとエラーが発生します。

エラーが発生してしまった場合、管理画面から修正版にアップデートすることができなくなってしまうため、FTP ツールなどで修正版のファイルをアップロードする必要があります。お手数をおかけしてしまい、大変申し訳ありません。

具体的な原因

Snow Monkey テーマ、および関連プラグインは PHP の Composer のオートロードという仕組みを使っています。これはプログラム内で PHP クラスのロードが必要なときに自動的にそのクラスをロードしてくれるという仕組みです。

このオートロードをおこなってくれるオートローダーの名前(PHP クラス名)は composer.json という設定ファイルをもとに自動生成されるのですが、この設定ファイルの記述に不備があり、各プラグインのオートローダーが同じ名前で生成されてしまったため、PHP でコンフリクトが発生してページの表示が中断されてしまっていました。

composer.json という設定ファイルをもとに自動生成される」という知識がなく、完全にランダムなものが自動生成されると勘違いしていたために、今回の問題がおこってしまいました。各プラグインを判別する名前である name プロパティを composer.json に指定することで、それぞれのプラグイン毎に重複しない名前が生成されるようだったので、各プラグインの composer.jsonname を指定し、修正版としてリリースしました。

修正版について

下記の無料・有料プラグインについて、修正版をリリースしました。修正版のバージョンと、各アップデート内容は以下のとおりです(問題が発生したのは Snow Monkey Blocks、Editor、Forms だけですが、念のためすべてのプラグインに同じ修正を入れました)。

  • Snow Monkey Blocks v20.3.5
    • Composer.jsonname プロパティを追加
  • Snow Monkey Editor v9.3.2
    • Composer.jsonname プロパティを追加
  • Snow Monkey Forms v6.0.3
    • Composer.jsonname プロパティを追加
  • Snow Monkey Archive Content v1.1.1
    • PHP 7.4 以上必須に変更
    • Composer.jsonname プロパティを追加
  • Snow Monkey bbPress Support v0.16.2
    • Composer.jsonname プロパティを追加
  • Snow Monkey Design Skin Hakuji v1.1.0
    • PHP 7.4 以上必須に変更
    • Composer.jsonname プロパティを追加
    • CSS カスタムプロパティを使うように変更(Snow Monkey v19 以上が必要)
  • Snow Monkey Diet v0.7.0
    • PHP 7.4 以上必須に変更
    • Composer.jsonname プロパティを追加
  • Snow Monkey Dropdown Navigation v2.2.0
    • PHP 7.4 以上必須に変更
    • Composer.jsonname プロパティを追加
    • CSS カスタムプロパティを使うように変更(Snow Monkey v19 以上が必要)
  • Snow Monkey Footer CTA v2.2.0
    • PHP 7.4 以上必須に変更
    • Composer.jsonname プロパティを追加
    • CSS カスタムプロパティを使うように変更(Snow Monkey v19 以上が必要)
  • Snow Monkey Google Fonts v1.1.0
    • Composer.jsonname プロパティを追加
  • Snow Monkey Heading Widget Area v2.1.0
    • PHP 7.4 以上必須に変更
    • Composer.jsonname プロパティを追加
    • CSS カスタムプロパティを使うように変更(Snow Monkey v19 以上が必要)
  • Snow Monkey Mega Menu v3.2.0
    • Composer.jsonname プロパティを追加
  • Snow Monkey Member Post v6.1.0
    • Composer.jsonname プロパティを追加
  • Snow Monkey Footer CTA 2.1.0
    • Composer.jsonname プロパティを追加

この記事を書いた人

キタジマ タカシ

長崎県長崎市在住。地元のWeb制作会社でWebデザイナー/エンジニアとして従事した後、2015年にフリーランス [ モンキーレンチ ] として独立。WordPress のテーマやプラグイン、ライブラリ、CSS フレームワーク等、多数のプロダクトをオープンソースで開発・公開しています。

Snow Monkey オンラインコミュニティ

Snow Monkey をより良いテーマにするために、今後の機能開発等について情報共有したりディスカッションをしたりする場所です。より多くのユーザーの交流があったほうがより良いプロダクトに育っていくと思いますので、ぜひご参加ください!