2012-09-03 59 views
7

我在當前的Symfony2項目有一個奇怪的PHP錯誤:奇怪的意外T_STRING錯誤

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)

你知道這個錯誤可以產生什麼,或者我可以搜索哪個方向?提前致謝。

+0

甚至有可能用'\\'命名類嗎? –

+1

檢查文件是否有BOM(字節順序標記),如果有,則將文件轉換爲沒有BOM的常規UTF-8 –

+0

@IvanHušnjak它不是BOM - 我們會看到'PHP致命錯誤:命名空間聲明語句必須是在第二行的/blahblah/Foo/BarBundle/Entity/User.php腳本中的第一個語句,然後 – phihag

回答

0

我認爲這是你文件的編碼問題。例如,如果您的項目採用UTF8編碼,請使用文本編輯器打開文件,然後選擇「編碼」 - >「不帶BOM」的UTF-8選項。

+0

謝謝,但這不是問題:文件已經以UTF8編碼,沒有BOM。 – ClemKeirua

+2

@Sybio你讀過這個問題的評論嗎?它已經被提及 – j0k

2

我與一起使用的大多數編碼約定嚴格要求在腳本中使用LF('Unix樣式','\x0A')行結束符。誰設法提交代碼CRLF或上帝保佑,CR不得不忍受皇家份額的痛苦。 )

這似乎並不是什麼大不了的事情,但它可以節省您搜索奇怪錯誤的時間 - 例如在這種情況下。

相關問題