今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

Joomla!でGoogle AdSense

この前から少しずつ書き足している「簡単! Joomla!でサイトを作ろう」ってサイト。Google AdSense の広告も問題なく表示してたんだけど、ある日(昨日)突然モジュール設定ができなくなった。それも Google AdSense 広告のモジュールだけ。
一旦モジュールを削除して、モジュールの再インストールをしようとしたら、「エラー! Joomla! XML セットアップ ファイルがパッケージにありません」なんて怒られた。この前は問題なくインストールできて設定もできたのにっ!

とりあえず、原因を調べるべくPHPにコードを追加してエラーが発生してそうなところを探ってみた。

  1. 「エラー! Joomla! XML セットアップ ファイルがパッケージにありません」でぐぐる

       →Joomla!のメッセージファイルがヒット。

        そのメッセージは「ERRORNOTFINDJOOMLAXMLSETUPFILE」って名前で定義されてた。
  2. サーバーにログインし、Joomla! をインストールしたディレクトリで「ERRORNOTFINDJOOMLAXMLSETUPFILE」を grep する。

       →libraries/joomla/installer 内の helper.php と installer.php (とメッセージを定義したファイル)でマッチ。
  3. PHPファイルを見てエラーの原因を探る。

       →XMLをload/parseするところか、ルートのタグ名のチェックで引っかかってるらしい。
  4. ルートのタグ名は合ってるので、load/parseに失敗してるんだろうと見て、PHPファイルにメッセージの表示を追加し、原因を特定。

       →XMLのload/parseで失敗しているのを確認。
  5. XMLファイルを開いてみる。

       →ざっと眺めた感じではまずいところはなさそうな・・・
  6. 1行目に気付く。

    <?xml version="2.5" encoding="utf-8"?>
    

    ぉぃ。

  7. "2.5" を "1.0" に書き換える。
  8. ZIPし直してインストールしてみる。

       →インストール成功!
もしかして、cron で PHP とか関係してそうなライブラリだかがアップデートされて、XML のバージョンをチェックするようになったのかも。
さっそく記事にしてみたり。
Google AdSense モジュールのエラー