У меня есть странная ошибка PHP в текущем проекте Symfony2:
unexpected T_STRING in /blahblah/Foo/BarBundle/Entity/User.php on line 1
Это довольно стандартная ошибка, обычно связанная с несогласованной парой «или».
Но вот код файла User.php
<?php namespace Foo\BarBundle\Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="fos_user") * @ORM\Entity(repositoryClass="Foo\BarBundle\Entity\UserRepository") */ class User extends \FOS\UserBundle\Entity\User { // classic user entity
Строка <? Php – строка # 1. Кавычек нет, и странная вещь исходит из того факта, что эта ошибка появляется только на моем промежуточном сервере: на 2 машинах разработки с локальными копиями кода он ведет себя так, как ожидалось, без ошибок или предупреждений. Файл правильный, кеш был опустошен. Я думал, что это может быть ошибка кодирования, но, похоже, это не так. Я также думал о проблемах с пространством имен, но версия PHP на сервере верна (5.3.16)
Есть ли у вас какие-либо идеи, из чего может произойти эта ошибка, или в каком направлении я мог бы искать? Заранее спасибо.
Большинство соглашений о кодировании, с которыми я работал, строго требуют использования строк в сценариях LF
('Unix style', '\x0A'
). И тот, кто сумел представить код с CRLF
или, CRLF
, запретил, CR
пришлось перенести королевскую долю боли. )
Это может показаться не таким уж большим делом, но это может спасти вам часы поиска странной ошибки – например, в этом случае.
Я думаю, что это проблема с кодировкой вашего файла. Если ваш проект закодирован UTF8, например, откройте файл в текстовом редакторе и выберите вариант «Кодирование» -> UTF-8 без спецификации.