Um zu verstehen, warum Header vor der Ausgabe gesendet werden müssen, müssen Sie sich eine typische HTTP-Antwort ansehen. Das PHP-Skript generiert hauptsächlich HTML-Inhalte und übergibt außerdem eine Reihe von HTTP/CGI-Headern an den Webserver. Dieser Fehler tritt auf, wenn Sie eine Website mit einer Datenbank oder einer PHP-Site auf dem Server hosten. Zuerst müssen Sie auf Ihre Hosting-Website gehen, die .htaccess-Datei suchen, den folgenden Befehl hinzufügen (php_flag Output_buffering on) und Ihr Problem wird gelöst.
以下是您可以排除故障并解决此问题的方法:
检查指定的行:警告信息显示输出始于/some/file.php的第12行,并且您在第23行尝试修改头部信息。转到这些行,并确保在第23行的header()函数调用之前没有任何空格、echo、print、HTML或其他输出。
删除任何前导空格:如果在当前文件之前包含或需要任何PHP文件(例如使用include或require),请确保这些文件在开头的
避免使用关闭的PHP标记:在仅包含PHP代码(没有HTML)的PHP文件中,通常建议省略文件末尾的关闭PHP标记(?>)。这样可以确保在关闭标记后没有意外的空格或字符,以避免触发输出。
使用输出缓冲:如果在header()调用之前有一些无法避免的输出(例如由于库依赖或条件语句),您可以使用输出缓冲来捕获输出并防止其立即发送到浏览器。在PHP脚本的开头使用ob_start()开始输出缓冲,在header()调用之前使用ob_end_flush()或ob_end_clean()结束输出缓冲。
使用输出缓冲的示例: