PHP头在脚本底部工作?

PHP头在脚本底部工作?,php,http-headers,Php,Http Headers,我正在使用localhost开发一个网站。最近我很惊讶,我使用的一个脚本被完全执行,然后使用“header:(”位置:http://...."""(此项在下)。我很惊讶,因为在调用任何输出之前,我已经阅读了需要在页面顶部的标题 为了查看是否有差异,我将标题放在脚本的顶部。我很好,但是脚本没有完全执行。我读到了“http://stackoverflow.com/questions/7213646/php-header-location-immediately“that i may”需要忽略用户中止

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

为了查看是否有差异,我将标题放在脚本的顶部。我很好,但是脚本没有完全执行。我读到了“http://stackoverflow.com/questions/7213646/php-header-location-immediately“that i may”需要忽略用户中止()和php fpm,它是fastcgi\u finish\u请求‎()以保证整个脚本的执行。”

我是一个新奇的程序员,所以如果有人能进入如何做这将是伟大的,如果它真的是必要的。然而,我的第一个(也是主要的)问题是,在脚本开始工作时,这是否必要。换句话说,这是否只是localhost的一个奇怪之处,因此当我正确地托管网站时,我需要走更复杂的路线?

header()需要在发送任何其他输出之前发送,这不取决于代码中的位置,而只取决于在使用header()之前发送输出的情况

如果在发送标题之前使用任何echo/print命令,将出现错误

防止输出在您希望发送之前发送的一种方法是使用输出缓冲(ob_start、ob_flush等)。看


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

我明白了。我的脚本只是执行一些mysql查询来记录用户详细信息(基本上大部分是一个访问者计数函数)。mysql查询不算作输出吗(看起来不算?)不,输出包括任何重定向到标准输出的内容,这意味着echo或打印内容的函数(例如print\r)。查询返回一个对象,不将任何内容打印到标准输出^^