Google Analytics MobileをPHP4で使えるようにする
先日発表され、正式に使えるようになったGoogle Analyticsの携帯版ですが、用意されているPHP版のトラッキングコードはPHP5に対応していてPHP4では動かない関数がまじっている!
これに気づかずに1日ログが取れなかった…orz
今時PHP4はつかってねぇーよ!っていう方もいらっしゃると思いますが、同じようにログが取れなかったー…orzという方のためにエントリーを書いておこうと思います。
具体的には、アクセス解析用のga.phpというファイル(トラッキングコードを埋め込むときにDLして使うヤツ)のsetrawcookie()とfile_get_contents()で引っかかります。
setrawcookie()はPHP5の関数でPHP4では使えないです。
file_get_contents()はPHP4.3.0以降で登場し、仕様に違いがあるようなので、それを何とかしないといけないです。
ということで、まずPEARでPHP_Compatをインストール!
pear install PHP_Compat-1.6.0a2
さらにga.phpの先頭部分でライブラリを読み込んでおきましょう。
require_once 'PHP/Compat/Function/setrawcookie.php'; require_once 'PHP/Compat/Function/file_get_contents.php';
97行目・100行目のfile_get_contents を php_compat_file_get_contents に書き換えます。
さらに144行目あたりのsetrawcookie()を次のように書き換えます。
setrawcookie( COOKIE_NAME, $visitorId, $timeStamp + COOKIE_USER_PERSISTENCE, COOKIE_PATH, '', false, false );
第5,6,7引数にfalseとか入れてるだけですが、これがないと引数入れろと怒られます。
これでOKのはず…
参考にした「Trend Antenna 開発日記」さんの「モバイル版 Google Analytics を PHP4 で動かす」にも書いてあるとおり、
file_get_contents は、PHP4.3.0 以降ではすでに登場しているため、PHP_Compat::loadFunction を使う PEAR PHP_Compat の通常の使い方だと、PHP ネイティブの関数が優先されてしまいます。そこで、上記のように個別の関数を手動で読み込んだうえで、PHP_Compat 側の関数を使うようにしているのです。
ということで、このような変更を行っています。
ga.phpにアクセスしてもエラーは出なくなっているので、たぶん大丈夫だと思います。