2008年8月アーカイブ

久しぶりに書いてみる。
header('Location: ~~') って書いて実行して、ローカルのアパッチでは問題なくページが遷移できたのに、サーバにアップロードして実行したらページが遷移できなかった、なぜだろう? というお話。

理由を考えてみた。

  1. header() の前に何か出力してない?
     ははは。まさかそんなワケないっしょ。却下。
  2. サーバの該当のページに、Basic 認証をかけているから?
     Basic 認証をかけているページからかけていないページへ、その逆など、いろいろ試してみたけど特に関係ないみたい。
  3. 本当に、header() の前に何か出力してないのかい?
    ・・・やっぱこれかな? よし、調べてみよう。

以下のプログラムをローカル環境、サーバ環境でそれぞれ実行してみた。

■----transition1.php-----■
<?php

echo 'HAHAHA!!';

header('Location: index.php');

?>

■------------------------■

結果、ローカル環境では index.php に遷移し、サーバ環境では遷移せず、『HAHAHA!!』という文字列が出力されました。
というワケで、ローカル、サーバで動きが異なったのは、単純に設定か何かの問題だろうということで無視。

とにかく、やっぱり何かを出力しちゃってるっぽいぞと。
いったいそれはなんなんだと。

で、問題のプログラムを詳しく見ていったら、はい! わかった! 解決!

唐突に問題!
さて、今回の問題は、以下 2 つのプログラムと同様の問題により、header("Location: ~~") が機能しませんでした。
いったいドコが悪いのでしょう?
答えは土曜日くらいに!
解答がなくても土曜日くらいに!

■----function.php--------■
<?php

function process($var){
    return $var * 2;
}

?>

■------------------------■

■----transition2.php-----■
<?php

require_once('function.php');

header('Location: index.php');

?>

■------------------------■