首先,我不是PHP的新手,也不是发送标题。但是,我收到以下错误:
Warning: Cannot modify header information - headers already sent in /var/www/oraviewer/download/scripts/start.inc on line 30
Warning: Cannot modify header information - headers already sent by (output started at /var/www/oraviewer/download/scripts/start.inc:30) in /var/www/oraviewer/download/scripts/start.inc on line 31
Warning: Cannot modify header information - headers already sent by (output started at /var/www/oraviewer/download/scripts/start.inc:30) in /var/www/oraviewer/download/scripts/start.inc on line 32
3个错误,因为我正在尝试发送3个标题。
我已经搜索了所有包含的文件,检查了它们是否有可能发送标题,换行符,文本等等。
我已经习惯了这种错误,告诉你印刷品的第一位来自哪里(见第二个2错误,看看我的意思)但是第一个没有告诉我什么。
据我所知,自从我上次让它们工作以来,这些文件都没有改变,并且使用备份副本,它们工作正常。不幸的是,如果我用备份文件替换它们,问题仍然存在。我会发布文件,但大约有六打,相当于几百行。
所以,我的主要问题是:可能导致这种情况的原因,以及如何追踪它的来源?
编辑:30行的3行,即打印的特定标题
header('Content-Type: application/octet-stream');
header('Content="text/plain;charset=ISO-8859-1"');
header('Content-Disposition: attachment; filename="'.$fileName.'"');
如果我发表评论,那么错误将从下一个开始,所以我知道这些错误在此之前。
getExtract.php文件中start.inc之前的代码:
<?php
include_once "start.inc";
start.inc文件:
<?php
$extract = $_GET['extract'];
$debug = $_GET['debug'];
include "../../lib/conf.inc";
include $mainsitedir."/lib/db_connect.inc";
include $mainsitedir."/lib/utils.inc";
include "../queries/get_output_file_name.php";
$db_link = connect_db();
$query = "SELECT * FROM extract_wxo_list WHERE extract_id='{$_GET['extract']}'";
$file = db_get_row(db_query($db_link, $query));
$fileName = $file['OUTPUT_FILE_NAME'];
if (!empty($_GET['versiondate'])) {
$sql = "SELECT * FROM version_history WHERE version_start_date = '{$_GET['versiondate']}'";
$vquery = db_query( $db_link, $sql );
if ($vrow = db_get_row($vquery)) {
$splitName = preg_split("/[.]/", $fileName, 2);
$fileName = $splitName[0].'_'.str_replace(".", "", $vrow['VERSION']).'.'.$splitName[1];
}
}
if ( $_GET['debug'] ) {
echo "$fileName<br /><pre>";
} else {
header('Content-Type: application/octet-stream');
header('Content="text/plain;charset=ISO-8859-1"');
header('Content-Disposition: attachment; filename="'.$fileName.'"');
}
date_default_timezone_set('UTC');
?>
靠近顶部的4个包含在另外几个文件中是相同的。它们也使用类似但不太通用的标题,因此我可以将它们排除在原因之外。
答案 0 :(得分:1)
检查您是否在<?php
之前留下了空白
或者尝试使用ob_start();和ob_end_flush();
<?php
ob_start(); //Starts output puffer
echo "texttest";
if($bala==1) {
header("location:http://www.testdomain.org");
}
ob_end_flush(); //ends output puffer
?>
答案 1 :(得分:0)
查看/var/www/oraviewer/download/scripts/start.inc
第30行。这很可能是回显,打印,刷新或向浏览器转储内容。