- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在本地主机上构建我的网站(在 Windows 上运行 wamp),当我将它上传到我的服务器时,我总是得到“无法修改 header 信息 - header 已发送”
我知道不应该有任何空行和任何东西,通常这样就可以了。但是现在我需要在 header 发送后重定向某人,我怎样才能让我的服务器像我的本地主机一样?
我正在使用控制面板和 WHM:
cPanel 11.25.0-R42399 - WHM 11.25.0 - X 3.9VPS 上的 CENTOS 5.4 x86_64 virtuozzo
我将不胜感激
最佳答案
简而言之,在到达要使用 header() 函数的位置之前,您需要阻止 PHP 向浏览器输出任何内容。
这应该通过仔细的编程实践来完成,您的“无空行”就是其中之一,或者通过将 PHP 的输出存储在输出缓冲区中,并且仅在您准备好时才输出。
参见 ob_start()和 ob_flush()方法。您在应用程序开始时使用 ob_start() 。这将禁用输出并将其存储到缓冲区中。当您准备好开始输出时,使用 ob_flush() 并且 PHP 会将缓冲区的内容发送到浏览器,包括在此之前设置的 header 。如果您不调用 ob_flush(),则在脚本末尾输出(刷新)缓冲区。
它在您的 WAMP 开发环境中工作的原因很可能是输出缓冲已经在 php.ini 中默认启用。这些一体式软件包通常会为前 4k 字节左右启用默认缓冲区。但是,通常最好在代码中显式启动和刷新缓冲区,因为这会强制采用更好的编码实践。
关于linux - 如何在 linux、cpanel 上禁用 "header already sent"消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5394349/
我是一名优秀的程序员,十分优秀!