PHPでメールを受信すると /etc/aliases から/var/www/DIR/FILE1.phpが起動するプログラムを書いています。

しかし、header 関数を使ってページ遷移することができません。

FILE1がメールから無事に起動することを確認しました。
問題は、header('Location: FILE2.php');
と記述してページを遷移させようとしたのですが、
/var/www/DIR/FILE2.phpに遷移してくれません。
ただし、ブラウザからURLを指定して起動させると、遷移してくれます。

(*1) chdir('/var/www/DIR');と記述して、カレントディレクトリは変えることは行いました。。
(*2) 権限に問題があるかと思い、
暫定的にchmod -R 777 /var/www/DIR と
chown -R root.root /var/www/DIR を実行して全てのユーザに権限を与えていました。

知恵をお貸していただけると幸いです。
何卒よろしくお願いいたします。

回答の条件
  • 1人1回まで
  • 登録:2008/12/10 01:52:29
  • 終了:2008/12/11 02:25:15

ベストアンサー

id:goodvn No.1

goodvn回答回数228ベストアンサー獲得回数182008/12/10 04:05:29

ポイント80pt

Location ヘッダというのは,http の仕組みです

途中,ちょっと端折りますが,

1. ブラウザが,プログラムAにアクセス

2. プログラムA が起動

3. プログラムA が,Location ヘッダを出力

4. ブラウザが Location ヘッダを受信

5. ブラウザが,プログラムB へアクセス

6. プログラムB が起動

7. プログラムB が内容を出力

という形で,偏移します.つまり,ブラウザから見たら,プログラムA がプログラムB を起動しているように見えますが,実際には,異なるアクセスで,別のプログラムを呼び出しているだけであり,当然この仕組みはブラウザ込みで動いているので,メイルから起動した PHP の中で使っても無意味です

ペイジ偏移というのが,異なるプログラムを起動する,という意味でしたら,/etc/aliases で起動するときに,FILE1.php,FILE2.php の順に起動するように記述しては如何でしょうか

また,もしどうしても http 経由で処理したいということでしたら,php を直接呼び出さず,wget などを使って,http 経由で php をキックする仕組みは如何でしょうか(メイルのプログラムとしては,wget を登録する.wget のアクセス先に,このプログラムを,URL で指定する)

id:shotaroh5663

ご回答ありがとうございました。

2008/12/11 02:25:08

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません