-1

重複の可能性:
PHP によって既に送信されたヘッダー

ログファイルに次のエラーが表示され続けます。

[15-Jan-2013 00:50:04] PHP Warning:  Cannot modify header information - headers already sent by (output started at /home/usr/public_html/display.php:1) in /home/usr/public_html/display.php on line 17

そのため、最初の行のページを確認すると、ヘッダーが送信された可能性のある場所がどこにもありません。

display.php:

<?PHP
require './err/errhandler.php';
require './assets/display.php';
require './assets/excrate.php';

$mysql_host = "sqlhost";
$mysql_database = "db";
$mysql_user = "user";
$mysql_password = "password";

$name = $_REQUEST["q"];
$type = $_GET["s"];
$timeperiod = $_POST["tp"];
$currency = $_POST["c"];

if(isset($currency)){
    setcookie("prefCur", $currency, time()+60*60*24*30*12, "/");
    $_COOKIE["prefCur"] = $currency;
} else {
    if(!isset($_COOKIE["prefCur"])){
        setcookie("prefCur", "usd", time()+60*60*24*30*12, "/");
        $_COOKIE["prefCur"] = "usd";
    }
}
...

errhandler.php:

<?PHP
ini_set('display_errors', false);
ini_set('log_errors', true);
ini_set('error_log', dirname(__FILE__) . '/_err.log');
ini_set('output_buffering', 'on');

display.php:

<?PHP
function strip_name($name)
{
    return preg_replace('/\s\([a-zA-Z 0-9]*\)/', '', preg_replace('/[0-9%]+\s/', '', str_replace(":", "", str_replace("-H", "-h", $name))));
}

excrate.php:

<?PHP $eur = 0.747807; $gbp = 0.621828; $rub = 30.227148;

次に、phpファイルを追加しているのは私のホストなのだろうかと思うので、htaccessを次のように変更します。

php_value auto_prepend_file none
php_value auto_append_file none
Options +FollowSymLinks
...

そして、ヘッダーが既に送信されているというエラーが引き続き表示されます。私は今困惑しています。ヘッダーは最初の行のどこに送信されますか? 最初の行にあるため、出力バッファリングを有効にすることさえできません!

編集: の前には絶対に何<?PHPもありません。出力バッファリングがオンになっていても、機能しません。17 行目から 18 行目にシフトダウンするだけです。

4

3 に答える 3

0

の呼び出しを削除し、setcookie()出力を確認します。出力バッファリングをスローするだけが常に最良の選択であるとは限りません。インクルードされたファイルのいずれかが何かを出力するか、呼び出す関数のいずれかが警告/通知をスローする場合、それは設定されているヘッダーを構成します。

繰り返しますが、を削除してsetcookie()そこから移動します。外部からさらに診断するのは当て推量です。:)

于 2013-01-15T06:37:05.227 に答える
0

このコードをファイルの先頭に簡単に記述します

ob_start();
于 2013-01-15T06:32:53.133 に答える
0

OPが述べたように、彼のrequireには終了タグがないため?>、各requireの最後に追加してください。

于 2013-01-15T06:41:26.393 に答える