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してもすぐには反映されていないようだ。
それが原因と思われる。
そんなのすぐには気づかないよぉ~
※各記事(エントリー/投稿)の内容は投稿時のものです。閲覧時とは異なることがございますのでご了承ください。
コメント投稿