さくらインターネットのレンタルサーバに設置したところ、画面遷移が行なわれない症状が出ています。
ローカル環境では問題なく遷移しました。
ローカル環境
・PHP5.3
さくら環境
・PHP 5.2.12 (CGI版)
require('sample.php');
header("Location:http://q.hatena.ne.jp/");
など、どの方法を取っても画面遷移が行なわれません。
自宅環境ではapacheモジュールで動かしています。
さくらインターネットのCGIにしか対応していない点が問題なのでしょうか?
少しでも何か気がつく事があればご教授お願いします。
こちらの方と同じ症状ではないか?
http://d.hatena.ne.jp/gaziro2000/20090928/1254138914
なんのこっちゃって、PHPは " ?> " で閉じた後に文字列あると、HTMLとして出力しちゃうんだよね!?
だからrequireされた時点で、ヘッダー付き文字列を外部に送出しちゃうので、
その後にheader関数でリダイレクト仕様としても、もう出ちゃってるよって事(だよね?)
だから、ファイルの最後に不要な改行を入れてしまったのがアウトの原因て事。
(´ρ`)アウ
requireしている sample.php の末尾改行を取れば直る可能性大。
FTP転送するときの改行コード&文字コードがさくらインターネット
の仕様にあってないのでは?
おそらく改行コードがCR+LFになってるので、UNIX環境ではちゃんと動作しないと思われる。
解決致しました。ありがとうございます。
今丁度それを実行したところでした。
その一行だけで試した所、正常に遷移しました。
ので、やはり2番の方の通り、文字コードが原因の可能性が高いと思いますがどうでしょうか?
その一行だけで試した所、正常に遷移しました。
sample.phpの中身を拝見しないと何とも言えません。
もし文字コードや改行コードが問題なのであれば、何らかのエラーが返ってくるはずです。
原因が判明しました。
これはおそらく単純にソース上の問題かと思われます。。。。
下記のように書いており、最初のを削除した所正常に処理されました。
ただ、ローカルではこのままで動いたので、なぜ?という感じですが。
// ログイン処理
?>
ここに実処理
?>
header行の次に「exit;」を入れてみたらいかがですか?
と言うか、入れないと、この後の処理が普通に行われて遷移に失敗してしまうような気がします。
header("Location: http://q.hatena.ne.jp/");
exit;
// この後の処理
入れておりました。上記の件で解決しました。
解決致しました。ありがとうございます。