PHP 标头重定向在 nginx 中工作,甚至输出已发送

PHP 标头重定向在 nginx 中工作,甚至输出已发送

注意:类似的问题但这是关于 Apache 的。

下面的代码

<?php
echo '.';
header('Location: http://stackoverflow.com');

在 nginx 0.7.67 下完全“工作”,其中“工作”表示 php 重定向工作正常,错误日志中没有错误或显示.

我如何强制 nginx 或 php-fpm 发出PHP Warning: Cannot modify header information - headers already sent by警告?

答案1

您应该检查output_bufferingphp.ini 文件中参数的值。

php.ini #输出缓冲

答案2

我遇到了同样的问题,我发现这是因为header("Status: 200 OK", false, 200);在重定向的标头之前有一个。所以我添加了一个条件,如果我知道必须重定向,则不显示标头 200:

if(!isset($_GET['utm_source'])) { //Header will be Redirect 301 from global_cookies.inc.php
    header("Status: 200 OK", false, 200);
}

笔记:使用 Apache 时我没有遇到这个问题,甚至可以在标头 200 之后重定向。

相关内容