• 締切済み

PHPとAPACHEのエラー「Warning: Cannot modify header information」について

こんばんわ、 現在APACHEとPHPを使用してWEBを作成しています。 PHPLIBを使用して認証頁を作成しようとしているのですが、そのさいに下記のエラーがでます。 Warning: Cannot modify header information - headers already sent by (output started at /home/XXXXXXXXXX/include/login.inc:14) in /usr/local/apache/phplib-7.4/php/session.inc on line 479, 480, 481, 482, 483 です。 ちなみに/home/XXXXXXXXXX/include/login.inc:14には、 1 <?php 2 include ("prepend.php"); 3 page_open( 4 array("sess" => "Example_Session", 5 "auth" => "Example_auth", 6 "perm" => "Example_Perm", 7 "user" => "Example_User")); 8 ?> 9 10 11 12 13 としかなく、14行目はありません。 prepend.phpとsession.incはデータベースをpgslにかえた以外はなにもしておりません。 478 default: 479 header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 480 header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 481 header("Cache-Control: no-cache"); 482 header("Cache-Control: post-check=0, pre-check=0", false); 483 header("Pragma: no-cache"); 484 break; となっています。 以前までは、prepend.phpのみを.htaccessのauto_prepend_fileに指定していましたが、その部分をこのlogin.incに指定しなおしただけでこのエラーがでました。 なにがわるいのかよく解りません。なにの設定がわるいのでしょうか。 初歩的な質問ですが、宜しくお願いします。

みんなの回答

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.1

ヘッダーを送る前に、何もはき出しては行けません。 httpdの規則です。

関連するQ&A

  • PHPでredeclareのエラーがでるのですが...

    こんにちわ、 現在PHP4でweb作成をしています。それで認証はPHPLIBを使用しているのですが、 「Fatal error: Cannot redeclare class db_sql in /usr/local/apache/phplib-7.4/php/db_pgsql.inc on line 12」 というエラーがでます。 ただ、DB_Sqlというクラスはこのdb_pgsql.incでのみしか使用しておらず(class DB_Example extends DB_Sqlはlocal.inc内で使用しています)、原因が解りません。 おそらく、.htaccess内でprepend.phpをauto_prepend_fileと指定していて、そのprepend.phpのなかで、 (前略) require($_PHPLIB["libdir"] . "db_pgsql.inc"); require($_PHPLIB["libdir"] . "ct_sql.inc"); require($_PHPLIB["libdir"] . "session4.inc"); require($_PHPLIB["libdir"] . "session4_custom.inc"); require($_PHPLIB["libdir"] . "auth4.inc"); require($_PHPLIB["libdir"] . "perm.inc"); require($_PHPLIB["libdir"] . "user4.inc"); require($_PHPLIB["libdir"] . "menu.inc"); require($_PHPLIB["libdir"] . "local.inc"); require($_PHPLIB["libdir"] . "page4.inc"); : (後略) としているために、毎回db_pgsqlがよみこまれるためだとおもいますが、よくわかりません。 質問として漠然としていますが、もしもエラーについてすこしでもなにかしっている方、アドバイスの方、宜しくお願いします。 ちなみにphplib-7.4をインストールしてからかえたのは、 -- .htaccessをかえた(auto_prepend_fileをかえた) -- prepend.phpのdb_mysqlをdb_pgsqlにかえた くらいです。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHPLIBでのエラー

    こんばんわ, 現在自分のHPをPHPLIBを使用したセッション認証を取り入れようとしているのですが,エラーがでてしまいます。 エラーの内容は, Warning: main(db_pgsql.inc): failed to open stream: No such file or directory in /XXXXXXXXXXX/prepend.php on line 30 Fatal error: main(): Failed opening required 'db_pgsql.inc' (include_path='.:./include:./template') in /XXXXXXXXXXX/prepend.php on line 30 という内容が出ています。 そのprepend.phpの中は, 25 #ORIGINAL 26 $_PHPLIB["libdir"] = ""; 27 28 29 30 require($_PHPLIB["libdir"] . "db_pgsql.inc"); となっています。 また,同ディレクトリにある.htaccessには 3 DirectoryIndex index.php 4 5 <IfModule mod_php4.c> 6 php_value include_path ".:./include:./template" 7 8 php_value auto_prepend_file "prepend.php" 9 </IFModule> 10 11 AddType application/x-httpdphp .php .inc .ihtml となっています。 おそらく初歩的な質問だとは思いますが, よろしくお願いします。

    • ベストアンサー
    • PHP
  • エラー Warning: Cannot modify header information

    10日で覚えるPHP入門教室の本を買ってPHPを学習中の初心者です。 この本のサンプル例題でクッキーを使って初回入力データを2目のアクセスでも表示するコードがあるのですが、どうしても Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\php10\day02-3\cookie_rec.php:6) in C:\xampp\htdocs\php10\day02-3\cookie_rec.php on line 6 のエラーがでます。 下記がそのサンプルコードズバリです。 -----cookie.php------- <html> <head> <title>クッキーでデータを記録する</title> </head> <body> <form method="POST" action="cookie_rec.php"> E-Mailアドレス: <input type="text" name="email" size="30" maxlength="50" value="<?php print($_COOKIE['email']); ?>" /> <input type="submit" value="送信" /> </form> </body> </html> ------cookie_rec.php------- <html> <head> <title>クッキーでデータを記録する</title> </head> <body> <?php setcookie("email",$_POST['email'],time()+(60*60*24*90)); ?> クッキー"email"を保存しました。 </body> </html> cookie.phpでメルアドを送信するとcookie_rec.phpでクッキーにセットして次回cookie.phpを開けたらメルアドが既にinputboxに入力した状態になるはずですが、どうしてcookie.phpの送信ボタンを押すと上記のエラー表示となります。 なにが原因しているのでしょうか? お解りになる方、宜しくお願い致します。 環境はXAMPP Windows Version 1.6.3aのローカルでOSはXPです。

    • ベストアンサー
    • PHP
  • .htaccessの設定で,auto_prepend_fileを画像に対応させるには。

    今PHPでWebを作成しています。 サーバーはAPACHEで,.htaccessに <IfModule mod_php4.c> php_value include_path ".:./include php_value auto_prepend_file "login.inc" php_value auto_append_file "close.inc" </IfModule> Addtype application/x-httpd-php .html .php .inc .ihtml と書いて,.htaccess以下のディレクトリのphpや.incファイルに対して入るときはauto_prepend_fileを使用してlogin.incを呼ぶようにしています。 これに.gifを加えたいのですが,そのまま, Addtype application/x-httpd-php .html .php .inc .ihtml .gif とするとauto_prependは効くのですが,.gifファイルが文字として認識されます。 .gifに対してauto_prependを効かすにはどうすればいいのでしょうか。 よろしくお願いします。

  • Cannot modify header information

    質問がの仕方が下手なので理解しずらいかもしれませんが、どうかお願いします。 PHPを使っているとタイトルのエラーがが表示されてしまいます(T_T) ソースコードは <?php header(""Location: http://yahoo.co.jp"); exit; ?> という簡単なものです。 自分で調べてタブとか空白という事でしたので調べましたが、わかりませんでした。 試しに2、3行目をコメントにして実行すると画面上はもちろん真っ白なものが表示されます。 しかし、文字コードを変えてみると何かが文字化けしたようなものが表示されます。 これが問題だろうとはわかるのですが、どうしてよいかわからず・・・。 何方かアドバイスいただけないでしょうか

    • ベストアンサー
    • PHP
  • header(Location: next.php) だとPOSTした値が渡らない?

    文末は(だいぶ端折ってますが), (1) エラーがあればエラー表示, (2) エラーがなければnext.phpに飛ぶ という動作をするのですが, next.php 内に echo $_POST["Name"]; とか echo $_POST["reg"]; とか書いても valueの中身が渡ってきていません. header("Location: next.php"); で飛ばすとだめなのでしょうか. http://oshiete1.goo.ne.jp/qa2706500.html でも,#2さんのアドバイスのようにしようとしましたが, #1さんのご教示のように,セッションを利用するしかないですか? ちょっとセッションで値の渡し方がチンプンカンプンなのですが・・・ <?php session_cache_limiter('none'); session_start(); header("Cache-control:no-cache"); header("Pragma:no-cache"); $errFlg=false; if ( $_POST["reg"] == "" ) $errFlg = true; if ( !$errFlg ) { if ( $_POST["Name"] == "" ) { $errFlg = true; $errStr["Name"] = "未入力"; } } if ( $errFlg ) { ?> <html><body> <form method="post" action="<?php $_SERVER["PHP_SELF"] ?>"> <?= $errStr["Name"] ?></td> <input type="text" name="Name" value="<?php echo $_POST["Name"]; ?>"> <input type="submit" name="reg" value="登録"></td> </form> </body></html> <?php } else { header("Location: next.php"); } ?>

    • ベストアンサー
    • PHP
  • PHPlib インストールエラー

    どなたか、ヘルプお願いします。 PHPlib(PHPlib-7.4-pre2)をインストールするべく、設定を終え、動作確認(login & password画面で)したところ、以下のようなエラーメッセージで行き詰まっているところです。 Warning: pg_connect(): Unable to connect to PostgreSQL server: could not connect to server: Connection refused Is the server running on host localhost and accepting TCP/IP connections on port 5432? in /usr/local/apache/phplib-7.4-pre2/php/db_pgsql.inc on line 51 Database error: connect() failed. PostgreSQL Error: 0 () Session halted. 設定の際、設定の書き込みをしたのは、  ・local.inc の $Database、$Userの設定  ・prepend.php で db_pgsql.inc の指定 のみです。 ネットでこのエラーを調べたところ「pg_hba.conf」や「postgresql.conf」に関係するエラーのようですが、PHPlibを利用するにあたり、何か設定しなければならないのでしょうか? また、エラーが表示されている「db_pgsql.inc」にも何か設定が必要なのでしょうか? ちなみに、自作PHPファイルから該当データベースへの接続には成功しています。 [環境]FreeBSD、Apache1.3、PHP4.3、PosgreSQL7.4

    • 締切済み
    • PHP
  • PHP初心者です。何処がエラーなのかさっぱり解りません。

    超初心者です。 PHPの勉強を始めたばかりで、いきなりつまずいています。 下記の表示になりエラーになっているのですが、何処がエラーなのか意味が解りません。 Parse error: syntax error, unexpected $end in C:\xampp\htdocs\phplesson\03\login.php on line 31 どなたか教えてください。 よろしくお願いします。 ----------------- <?php session_start(); $error_message = ""; //ログインボタンが押されたかを判定 if (isset($_POST["login"])) { if ($_POST["member_name"] == "php" && $_POST["password"] == "password") { //ログインが成功した証拠をセッションに保持 $_SESSION["login_name"] = $_POST["member_name"]; //管理者専用画面へWebブラウザをリダイレクトさせる $login_url = "http://{$_SERVER["HTTP_HOST"]}/phplesson/03/anq_result.php"; header("Location: {$login_url}"); exit; } $error_message ="メンバー名かパスワードを間違えています。"; } ?> <html> <body> <?php if ($error_message) { print '<font color="red">' .$error_message. '</font>'; } ?> <form action="/phplesson/03/login.php" method="post"> メンバー名:<input type="text" name="member_name" value="" /><br /> パスワード:<input type="password" name="password" value="" /><br /> <input type="submit" name="login" value="ログイン" /> </form> </body> </html>

    • ベストアンサー
    • PHP
  • sessionがクリアされない

    教えてください。 BBB.phpでこのように書いていたとします。 <?php session_cache_limiter('private, must-revalidate'); session_start(); ~いろいろ処理~ unset($_SESSION['pcode']); ~いろいろ処理~ ?> <?php include(dirname(__FILE__).'/../include/header.php'); ?> </body></html> header.phpでは $_SESSION['pcode']を表示しているのですが、 前のページ(たとえばAAA.php)で$_SESSION['pcode']に値を入れていた場合 BBB.phpを表示すると その値が表示されてしまいます。 直前に unset($_SESSION['pcode']); をしているのに その前の値が表示されます。 includeはどのタイミングでなされるのでしょうか? また、 unset($_SESSION['pcode']); を有効にするにはどうすればいいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPのログイン処理について

    PHPのログイン処理について教えてください。 「login_auth.phpファイル」 <?php //session開始 session_start(); session_regenerate_id(true); //エラーメッセージを格納する変数を初期化 $error_message=""; //ログインボタンが押されたかを確認 if(isset($_post["sub"])){ if($_post["auth_id"] == "auth" && $_post["auth_pass"] == "1234"){ //ログインが成功した証拠をセッションに保持する $_session["login_name"] = $_post["auth_id"]; //管理者トップへWebブラウザをリダイレクトさせる $login_url = "http://{$_server["http_host"]}/reservation/auth_top.php"; header("Location: {$login_url}"); exit; } $error_message = "IDかPASSが間違えています"; } ?> <html> <body> <?php if($error_message){ print '<font color="red">'.$error_message.'</font>'; } ?> <center> <hr size="2" color="blue" width="50%"><br><br> <font size="4"><b>管理者認証画面</b></font> <br><br><hr size="2" color="blue" width="50%"><br><br> ユーザID/パスワードを入力してください。 <form action="login_auth.php" method="post"> <table border="2"> <tr> <td bgcolor="cyan">ユーザID</td> <td><input type="text" name="auth_id" value=""></td> </tr> <tr> <td bgcolor="cyan">パスワード</td> <td><input type="password" name="auth_pass" value=""></td> </tr> </table> <input type="submit" name="sub" value="ログイン"> </form> <a href="javascript:window.close();" target=_parent>閉じる</a> </center> </body> </html> 「auth_top.phpファイル」 <?php //セッションを開始する session_start(); //ログインが成功した証拠である変数のチェックを行なう if (!isset($_SESSION["login_name"])) { //変数に値がセットされていない場合は不正な処理とみなし、ブラウザをログイン画面へリダイレクトさせます $no_login_url ="http://{$_server["http_host"]}/reservation/login_auth.php"; header("Location: {$no_login_url}"); exit; } ?> 管理者画面です。 この簡単なプログラムなんですが、IDとPASSを入力しても画面が切り替わりません。 今、そこで行き詰っています。 どなたか教えていただけないでしょうか??

    • 締切済み
    • PHP