我是PHP Micro Framework的新手。
在我遇到这些错误之前,我最近一直在研究它。
<br />
<b>Fatal error</b>: Uncaught exception 'RuntimeException' with message 'Unexpected data in output buffer. Maybe you have characters before an opening <?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->finalize(Object(Slim\Http\Response))
#1 C:\xampp\htdocs\slim3\codecourse\vendor\slim\slim\Slim\App.php(298): Slim\App->process(Object(Slim\Http\Request), Object(Slim\Http\Response))
#2 C:\xampp\htdocs\slim3\codecourse\public\index.php(17): Slim\App->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而言,原因可能是什么?
我的项目的文件夹结构:
答案 0 :(得分:1)
编码应该是UTF-8和不带有BOM的UTF-8。当使用带有BOM的UTF-8时,它会在<?php
标记前面添加第一个字节编码标识,并且编辑不会显示它。这就是为什么它打破了PHP(可悲的我知道:D)
答案 1 :(得分:0)
以下两点需要注意:
PHP执行时 通常(可能有异常,具体取决于您的设置)输出。因此,只要有echo
或 PHP标记之外的任何内容,就会直接发送到浏览器。
由于HTTP的工作方式,必须在内容之前发送标头。发送内容后,您无法再设置任何标题。
这两个因素的相互作用意味着在第一个PHP标记之前打开空间会导致脚本无法发送任何HTTP标头。显然,Slim试图设置一些标题,但不能。我必须说它给你的错误信息是相当有用的信息。