PHP require_once でハマる(ように見えた)の巻

仕事で「片手間的に」サイトを作った時のお話し。
仕事だし「片手間」って言っても、ちゃんと作業はしてるんだけどね(苦笑)。

「.htaccess」で振っても良かったんだが…
なんとなくPHP内でユーザーエージェントをチェック。
その上で、

  • DoCoMo/AU/Softbank/WILLCOMのフィーチャーフォン
  • iPhoneまたはAndroidのスマートフォン(以下「SP」)
  • 上記ふたつ以外

に振り分けを行った。

いわゆる「index.php」では、ほぼ端末振り分けで実際の処理は別ファイルへ。
switch文で3分岐させ、それぞれ該当するPHPファイルを読み込み。
ここで、本来は「推奨しない」とされているrequireを使ったワケだ。

例えば、フィーチャーフォン用PHPは「mobile.php」、SP用は「sp.php」、それ以外は「pc.php」だった場合、

switch(端末タイプ) {
    case "フィーチャーフォン":
        require_once('mobile.php');
        break;
    case "SP":
        require_once('sp.php');
        break;
    default:
        require_once('pc.php');
        break;
}

とまぁ、こんな具合。

ここで、kAzzは「一般的には推奨されない使い方」ではあるが、「require_once」を使った。
「require」でもよかったんだが、普通はこっちを使うべきという人もいるしね。
もっとも、イロイロ考えなくて良いから、「require_once」を使っているワケだが…

これくらいは「いつもの処理」なので、なんの問題も無くテスト用サーバーで動作。
「そりゃそうだ」とばかりに本チャンサーバーへUP。
ところがだ…どうにもこうにも動かない!
正確に言うと、どんな端末タイプでもPC用を表示してしまうのだ。

イロイロ思い当たること全てやったが全くの不発。
で、念のためと「require_once」を「require」に変更。
一発で動いたしまったという。

どうしてでしょう?
「require_once」と「require」は既リードチェック以外は同じハズ。
今回のように、本来読み込むハズのファイルと違うものを読み込むってのは…

と思っていたら、どうやらサーバーの問題らしい。
ファイルを修正してFTPにてUploadしてもすぐには反映されていないようだ。
それが原因と思われる。
そんなのすぐには気づかないよぉ~

No comments yet.

コメント投稿

※各記事(エントリー/投稿)の内容は投稿時のものです。閲覧時とは異なることがございますのでご了承ください。