- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ローカル環境で動くのに本番環境で動かない(セッション変数が渡せず))
ローカル環境で動くのに本番環境で動かない(セッション変数が渡せず)
このQ&Aのポイント
- ローカル環境で動作するプログラムが、レンタルサーバー上では動作しない問題が発生しています。具体的には、セッション変数が正しく渡されず、ページ遷移ができないエラーが発生します。問題の解決策を探すために、設定項目を見直す必要があります。
- 質問文章のコードは、テキストフォームに入力された値をPOSTしてセッション変数として保存し、ページ遷移するというものです。しかし、レンタルサーバー上では正常に動作せず、ヘッダ情報の送信エラーが発生します。
- セッション変数が正しく渡されずにエラーが発生する原因として、レンタルサーバーの環境設定やPHPのバージョンの違いが考えられます。具体的な解決策を見つけるために、設定項目を再確認してください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
page1.phpに問題があります。 header関数はあらゆる出力の前にコールされる必要があることになっています。 http://jp2.php.net/header 従って、header関数を使うなら以下のような感じに書き直すべきでしょう。 <?php session_cache_limiter('none'); session_start(); if (isset($_POST['email'])) { $_SESSION["email"] = $_POST["email"]; header("Location: page2.php"); } ?> <html> (省略) </html> 余談ですが、遷移先は絶対URIで記述しないと受け付けないクライアントもあった気がします。
その他の回答 (1)
- UmJammer
- ベストアンサー率58% (115/196)
回答No.2
ANo.1です。 なるほど、同様の記述がたくさんあるということですね。 良い方法かわかりませんが、output_bufferingを有効にするという対策もあるかと思います。
質問者
お礼
UmJammerさん、たびたびのアドバイスありがとうございました。 わたしもちょうど、output_bufferingを有効にするという対策にたどり着いていたところです。 http://go4it.seesaa.net/article/73726670.html (そういえば、過去にIISで開発時も、この設定をOnにしたような記憶もあるような気がします。) 一応、Onで動作は確認できました。首吊りそうでした(^^;ありがとうございました。
お礼
UmJammerさん、早速のご回答ありがとうございました。 ご教示の内容を読んで凍り付いてしまったのですが、 なまじっか、Win(IIS)上で、ちゃんと動いていたことに過信し、 既に、ほとんどのプログラムが完成してしまっている状況です。 さあ、本番環境(レンタルサーバー)でテストしようかという矢先の トラブルで、途方に暮れています。困りました、、、 ともかく、対策を考えて見ます。ありがとうございました。