2014-10-03 2 views
0

Я получаю странную ошибку «неожиданного конца файла» с файлом PHP после внесения некоторых изменений от коллеги. При удалении блоков кода выборочно, я был в состоянии сварить проблему до двух, если блоки в файле, которые что-то вроде этого (удалены некоторые излишки для ясности):неожиданный конец файла при использовании длинных тэгов PHP

<?php if(...) { ?> 
    <li><a href="<?php print $prefix; ?>specials"><i class="fa fa-tag fa-lg2"></i> <?php print _("Specials"); ?></a></li> 
<? } ?> 

Теперь, если я изменю долго- образуют PHP открытый тег к shorttag, ошибка синтаксиса уходит:

<?if(...) { ?> 
    <li><a href="<?php print $prefix; ?>specials"><i class="fa fa-tag fa-lg2"></i> <?php print _("Specials"); ?></a></li> 
<? } ?> 

Я понимаю shorttag вызывает проблему, если shorttags был отключен, но я не понимаю, как longtag может быть причиной этого. Исправить это достаточно просто, я просто хочу знать, почему это происходит в первую очередь.

+0

Какая версия PHP вы используете? – Alexander

+1

На первом примере 3 строки, которую вы пропустили, набросал php вот так: Rizier123

+0

Версия 5.5.9 (пакет Ubuntu). –

ответ

0

ОК, поэтому проблема заключалась в отключении коротких замыканий. Когда тег отключен, PHP просто игнорировал оператор if и всегда выводил содержимое внутри блока if, которое меня бросало. Кроме того, я не знал, что с более новыми версиями PHP, даже с отключенными shorttags, вы все равно можете использовать открытый тег <? = С знаком равенства, что дало мне впечатление, что короткие сообщения были включены.

0

Вы должны открыть и закрыть в том же стиле (длинный или короткий, любой, что вы выберете).

Длинные теги:

<?php if(..) { ?> 
.. 
<?php } ?> 

Короткие теги:

<? if(..) { ?> 
.. 
<? } ?> 
+0

Я согласен, но я не написал код. –

Смежные вопросы