OpenXというオープンソースの広告配信管理システムがあります。アフィリエイトタグ等複数の広告を掲載したい場合に、2つを交互に出したり、期間を設定して表示・非表示を切り替えたり、クリックされた回数を管理できたりする大変優れたシステムです。

こちらをcoreserverにインストールしようと思ったところ、様々な問題が発生し、すんなりとインストールすることができませんでした。そこで最終的に正常動作させるまでの手順をご紹介したいと思います。

まずOpenXですが、phpがsafe modeでは動作しません。最新版のOpenX2.6.2を試しに実行してみたところ、インストール中に失敗してしまいました。coreserverは.htaccessに以下のように記載することで、PHPをCGIモードで稼動させることができ、safe modeではなく稼動させることができます。

—coreserverのサイトより抜粋—

AddHandler application/x-httpd-phpcgi .php
→PHP4が標準のサーバーでは「.php」をCGI版PHP4として動かす
→PHP5が標準のサーバーでは「.php」をCGI版PHP5として動かす

AddHandler application/x-httpd-php4cgi .php
→「.php」をCGI版PHP4として動かす

AddHandler application/x-httpd-php5cgi .php
→「.php」をCGI版PHP5として動かす

AddHandler application/x-httpd-php6cgi .php
→「.php」をCGI版PHP6として動かす

早速こちらを追記したところ、問題なくインストールが完了しました。しかし、管理画面にて広告を作成した際にXMLエラーのポップアップが表示されてしまいました。正しく動作はするのですが、事あるごとにポップアップが表示されるため、どこかで問題が発生して正しく動作しない可能性があります。

仕事でも使用する可能性があるため、この状態ではちょっと。。と思い調べてみたところ、PHPをCGIモードで動かした場合、自動的にヘッダーが出力されるため、content-typeをXHTML等で出力する記載をしても無視されてしまうのでエラーが発生しているようです。

OpenXのリポジトリを見てみると、該当部分に関する修正が施されているソースを発見しました。そこで開発バージョンの2.8をインストールしてみましたが、やはり同一のエラーが発生してしまいました。OpenX自体のソースをくまなく見ていると、「CGIモードの場合」といった判定が入っていますので正しく動作する感じなのですが。。PHP4やsafe modeがなくなるPHP6等も試してみましたがどれもだめでした。

あきらめきれず、今度は最新版でなく逆に古いバージョンを試してみることにしました。OpenXは運営会社が頻繁に変わり、名称も何回も変わっています。そこで2007年に公開され、多くのサイトで評価の高かった「OpenAds 2.0.11 pr1」をインストールしてみました。

するとCGI版として実行する上記記述をはずしても正しくインストールすることができました!ただ、バージョンとして古いため、少しでも最新を使用したいと思い、OpenXのサイトからすべてのバージョンをダウンロードして、一つ一つインストールしてみました。するとどうやら「2.3」からsafe modeでは動かない仕組みになったようです。そうなるとsafe modeで動作する最新版は「OpenAds 2.0.11 pr1」となるようです。最終的にはこちらのバージョンで進めることにしました。

しかし喜んでいたのも束の間、管理画面で文字化けが発生していました。画面上では正しく出ていてもphpMyAdminで文字化けていたり、実際にサイトに広告掲載をしてみたところ、onmouse時のテキストが化けていたりと、問題が多々見つかりました。

一つ一つ地道に改善を行い、ようやくすべての場所で文字化けを解消することができました。行った対策は以下のとおりです。

  1. adjs.php(127行目)

    ヘッダー出力部分に「; charset=UTF-8」を追記
    header(”Content-type: application/x-javascript; charset=UTF-8″);

  2. admin/banner-edit.php(1502行目)

    htmlentitiesをhtmlspecialcharsに修正
    htmlspecialchars($row['htmltemplate'])

  3. libraries/lib-db.inc.php(76行目の後ろ)

    以下を追記
    @mysql_query (”SET NAMES utf8″);

  4. OpenAdsのトップ階層に.htaccessを作成し、以下を記述

    AddDefaultCharset UTF-8



以上で文字化け対策は完了しました。

しかし更なる問題を発見しました。統計値が正しく取得されていません。。そこで公式サイトを見てみたところ、MySQL5.2.4以上ではエラーが発生する旨が書かれているのを発見し、修正版ソースを適用しました。

libraries/lib-log.inc.phpを以下と差し替え
https://svn.openx.org/openads/branches/2.0/trunk/libraries/lib-log.inc.php

これで正しく統計も表示されることを確認しました。

以上、大変長い道のりでしたが、ようやくcoreserverで広告配信することに成功しました。




ランキング参加中です。よろしければ投票してください。
にほんブログ村 IT技術ブログへ ブログランキング