0

我正在使用 localhost 来开发一个网站。最近我很惊讶我正在使用的一个脚本被完全执行,然后使用“header:('Location:http://....')”重定向(这个在底部)。我很惊讶,因为在调用任何输出之前,我已经阅读了需要位于页面顶部的标题。

为了查看是否存在差异,我将标题放在脚本的顶部。我重定向很好,但脚本没有完全执行。我在“http://stackoverflow.com/questions/7213646/php-header-location-immediately”上读到,我可能“需要 ignore_user_abort() 并且使用 php-fpm 它是 fastcgi_finish_request‎() 来保证整个脚本的执行。”

我是一个新奇的程序员,所以如果有人可以了解如何做到这一点,那就太好了,如果它真的是必需品的话。然而,我的第一个(也是主要)问题是这是否有必要,因为脚本开始工作。换句话说,这只是 localhost 的一个奇怪之处,因此当我正确托管网站时,我需要走更复杂的路线吗?

4

1 回答 1

1

header() 需要在发送任何其他输出之前发送,这不取决于代码中的位置,而仅取决于是否在使用 header() 之前发送了输出。

如果您在发送标头之前使用任何 echo/print 命令,您将收到错误消息。

防止输出在您希望之前发送的一种方法是使用输出缓冲(ob_start、ob_flush 等)。请参阅http://php.net/manual/en/function.ob-start.php

输出缓冲将“存储”您的所有输出,直到您准备好发送它,即。发送标题后。

于 2012-12-24T11:52:05.350 回答