2016-08-11 1 views
1

Я новичок в этой PHP Micro Framework.Пространство перед <? PHP-тегами вызывает ошибку в Slim

Я смотрю на него в последнее время, прежде чем я застрял с этими ошибками.

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

+0

Slim бросает исключение, если есть выход перед вашим PHP-тегом, причина которого * вероятно *, потому что вы никогда не хотите выводить до открытия PHP-тега (за исключением шаблонов типа .phtml) ... это испортит любой ' header() ', который вы пытаетесь установить. – CD001

+0

Это не ошибка в Slim. Это проблема пользователя. Когда пробелы встречаются в файлах, содержащих php-код, php отправляет заголовки браузеров, к которым тогда slim wont, потому что он больше не контролирует какой-либо аспект этого потока. – geggleto

+0

@ CD001 @ geggleto Мой код не имеет места до Sudo255

ответ

0

Вот две вещи, которые нужно иметь в виду:

  • РНР обычно (могут быть исключения, в зависимости от настроек) как он выполняется. Итак, как только есть echo или что-нибудь за пределами PHP-тегов, которое отправляется непосредственно в браузер.

  • Из-за способа работы HTTP заголовки должны быть отправлены перед контентом. После того, как вы отправили контент, вы не сможете установить дополнительные заголовки.

Взаимодействие этих двух факторов означает, что открытое пространство перед тем, как ваш первый тег PHP визуализирует скрипт, который не может отправлять HTTP-заголовки. По-видимому, Slim пытается установить некоторые заголовки, но не может. Должен сказать, что сообщение об ошибке, которое оно дает вам, является достаточно информативным.

+0

, мои коды начинаются в строке # 1 с помощью Sudo255

+0

@AgApeAmAdeuskAmAgenge Unicode BOM, возможно? Попробуйте взять гексагон. – TRiG