PHP标头已发送错误
尝试运行以下PHP脚本。
您将看到正常的输出或得到以下错误消息。
这是因为当您尝试启动会话时,它会将项目添加到浏览器输出的标题中,包括cookie的设置。要阻止这种情况的发生,您需要确保将session_start()函数调用放在浏览器的任何输出之前。所有标头修改功能(包括set_cookie()和)都是这种情况header()。
如果在 and标记之前和之后在文件中添加任何空格,也会看到这些错误消息。为了解决这个问题,您可以trim()在包含的所有文件上使用该功能。以下代码将在目录中运行,并在备份文件后修剪所有文件中的所有空白,以防万一出现问题。
read())) { $file = $d->path.'/'.$f; if (is_file($file)) { copy($file, $file.'.bak'); $contents = trim(join('',file($file))); $fh = fopen($file,'w') or die('Can\'t open file: '.$file); if (-1 == fwrite($fh,$contents)) { die('Can\'t write to file: '.$file); } fclose($fh) or die('Can\'t close file: '.$file); } } ?>
如果您没有看到上述错误消息,则说明您的PHP引擎已设置为启用输出缓冲。打开php.ini文件并查找以下行。
output_buffering=4096
将其更改为此,然后重新启动服务器。
output_buffering=off
输出缓冲的工作方式是停止所有输出到浏览器,直到PHP完成代码运行为止,至少直到前4096个字节(php.ini文件中设置的默认选项)为止。然后它将运行任何头脚本,并将所有输出发送到浏览器。使用此方法的缺点是,在进行预处理时,由于可能直到最后一刻都没有任何输出显示在屏幕上,因此它可能会降低服务器的速度。