<! - ?之前的空格?PHP标签在Slim中导致错误

时间:2016-08-11 15:40:47

标签: php slim

我是PHP Micro Framework的新手。

在我遇到这些错误之前,我最近一直在研究它。

Displayed Errors

<br />
<b>Fatal error</b>:  Uncaught exception 'RuntimeException' with message 'Unexpected data in output buffer. Maybe you have characters before an opening &lt;?php tag?' in C:\xampp\htdocs\slim3\codecourse\vendor\slim\slim\Slim\App.php:552
Stack trace:
#0 C:\xampp\htdocs\slim3\codecourse\vendor\slim\slim\Slim\App.php(344): Slim\App-&gt;finalize(Object(Slim\Http\Response))
#1 C:\xampp\htdocs\slim3\codecourse\vendor\slim\slim\Slim\App.php(298): Slim\App-&gt;process(Object(Slim\Http\Request), Object(Slim\Http\Response))
#2 C:\xampp\htdocs\slim3\codecourse\public\index.php(17): Slim\App-&gt;run()
#3 {main}
  thrown in <b>C:\xampp\htdocs\slim3\codecourse\vendor\slim\slim\Slim\App.php</b> on line <b>552</b><br />

我试图寻找可能导致这些错误的原因的解决方案,我发现一旦<?php开启标记之前没有空格,那些错误就会消失,但如果你在<?php再次显示这些错误的标记。

就PHP而言,原因可能是什么?

我的项目的文件夹结构:

Folder Structure1

2 个答案:

答案 0 :(得分:1)

编码应该是UTF-8和带有BOM的UTF-8。当使用带有BOM的UTF-8时,它会在<?php标记前面添加第一个字节编码标识,并且编辑不会显示它。这就是为什么它打破了PHP(可悲的我知道:D)

答案 1 :(得分:0)

以下两点需要注意:

  • PHP执行时 通常(可能有异常,具体取决于您的设置)输出。因此,只要有echo PHP标记之外的任何内容,就会直接发送到浏览器。

  • 由于HTTP的工作方式,必须在内容之前发送标头。发送内容后,您无法再设置任何标题。

这两个因素的相互作用意味着在第一个PHP标记之前打开空间会导致脚本无法发送任何HTTP标头。显然,Slim试图设置一些标题,但不能。我必须说它给你的错误信息是相当有用的信息。