現在PHPにて簡単なWEBアプリを作っています。

さくらインターネットのレンタルサーバに設置したところ、画面遷移が行なわれない症状が出ています。
ローカル環境では問題なく遷移しました。
ローカル環境
・PHP5.3
さくら環境
・PHP 5.2.12 (CGI版)

require('sample.php');
header("Location:http://q.hatena.ne.jp/");

など、どの方法を取っても画面遷移が行なわれません。

自宅環境ではapacheモジュールで動かしています。
さくらインターネットのCGIにしか対応していない点が問題なのでしょうか?

少しでも何か気がつく事があればご教授お願いします。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2010/03/23 11:43:21
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:Km1967 No.1

回答回数224ベストアンサー獲得回数35

ポイント30pt

こちらの方と同じ症状ではないか?

http://d.hatena.ne.jp/gaziro2000/20090928/1254138914

なんのこっちゃって、PHPは " ?> " で閉じた後に文字列あると、HTMLとして出力しちゃうんだよね!?

だからrequireされた時点で、ヘッダー付き文字列を外部に送出しちゃうので、

その後にheader関数でリダイレクト仕様としても、もう出ちゃってるよって事(だよね?)

だから、ファイルの最後に不要な改行を入れてしまったのがアウトの原因て事。

(´ρ`)アウ

requireしている sample.php の末尾改行を取れば直る可能性大。

id:pikab1

解決致しました。ありがとうございます。

2010/03/23 11:41:35
id:ko8820 No.2

回答回数1221ベストアンサー獲得回数69

ポイント50pt

FTP転送するときの改行コード&文字コードがさくらインターネット

の仕様にあってないのでは?

おそらく改行コードがCR+LFになってるので、UNIX環境ではちゃんと動作しないと思われる。

id:pikab1

解決致しました。ありがとうございます。

2010/03/23 11:41:37
id:Bombastus No.3

回答回数409ベストアンサー獲得回数52

ポイント50pt

まずは障害の切り分けをしましょう


header("Location: http://q.hatena.ne.jp/");

この1行だけで画面遷移はしますか?

id:pikab1

今丁度それを実行したところでした。

その一行だけで試した所、正常に遷移しました。

ので、やはり2番の方の通り、文字コードが原因の可能性が高いと思いますがどうでしょうか?

2010/03/22 22:33:11
id:Bombastus No.4

回答回数409ベストアンサー獲得回数52

ポイント20pt

その一行だけで試した所、正常に遷移しました。

sample.phpの中身を拝見しないと何とも言えません。

もし文字コードや改行コードが問題なのであれば、何らかのエラーが返ってくるはずです。

id:pikab1

原因が判明しました。

これはおそらく単純にソース上の問題かと思われます。。。。

下記のように書いており、最初のを削除した所正常に処理されました。

ただ、ローカルではこのままで動いたので、なぜ?という感じですが。

// ログイン処理

?>

ここに実処理

?>

2010/03/22 23:20:40
id:amagami No.5

回答回数53ベストアンサー獲得回数0

ポイント20pt

header行の次に「exit;」を入れてみたらいかがですか?

と言うか、入れないと、この後の処理が普通に行われて遷移に失敗してしまうような気がします。

header("Location: http://q.hatena.ne.jp/");

exit;

// この後の処理

id:pikab1

入れておりました。上記の件で解決しました。

2010/03/23 11:41:09

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

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

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

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

回答リクエストを送信したユーザーはいません