【问题标题】:Necessity of prefixing all PHP pages with ob_start()必须在所有 PHP 页面前加上 ob_start()
【发布时间】:2010-11-12 18:47:56
【问题描述】:

可以在所有 PHP 页面的开头使用ob_start() 吗?

如果我不这样做,我会收到“标头已发送”错误。

【问题讨论】:

  • 如果这些错误是违背您的意图提出的,您可能需要先检查松散/过早的输出和内容。
  • 是的,记得open_end_cleanob_end_flush 但你应该寻找标题来自哪里
  • @ajreal - 我很确定你的意思是ob_end_clean,而不是open_end_clean。 :)
  • @Matt Huggins - soli,现在是凌晨 3 点...
  • +1 来弥补反对意见(为什么是 btw?),因为这实际上是一个关于一般应用程序风格的好话题。

标签: php output-buffering


【解决方案1】:

“没问题”,但您应该真正修复您的脚本,使其不会过早输出内容并保存输出以备不时之需。但是您可以更改.htaccessphp.ini 中的设置,下面是.htaccess 的:

php_value output_buffering On
php_value output_handler mb_output_handler

在我看来,这将是首选,而不是将ob_start 添加到所有脚本的顶部。

但是,您确实应该从根本上解决问题。 IE:保存脚本结束时的输出。

【讨论】:

    【解决方案2】:

    您可能有页面顶部之前的空白

    这将导致错误“HEADER ALREADY SEND”

    不知道 ob_start()

    【讨论】:

      【解决方案3】:

      我会说可以将其作为一种解决方法,或者只是快速使现有脚本工作。但是,从长远来看,您应该考虑重新设计您的应用程序,以免发生此类事情。一般来说,您应该尝试完全分离应用程序逻辑和输出。

      【讨论】:

        猜你喜欢
        • 2020-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-27
        • 2023-02-15
        相关资源
        最近更新 更多