2012-09-03 13 views
7

ich einen seltsamen PHP-Fehler in einem aktuellen Symfony2 Projekt:Sonderbare unerwartete T_STRING Fehler

unexpected T_STRING in /blahblah/Foo/BarBundle/Entity/User.php on line 1 

dies einen ziemlich Standardfehler ist, in der Regel zu einem unpassenden Paar "oder‘

Aber hier verlinkt ist. der Code der Datei ist 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 

die Linie <? php ist Zeile # 1. Es gibt keine Zitate, und die seltsame Sache kommt von der Tatsache, dass dieser Fehler nur auf meinem Testserver erscheinen : auf 2 Entwicklungsmaschinen mit lokalen Kopien des Codes verhält es sich wie erwartet ohne Fehler oder Warnung. Die Datei ist die richtige, der Cache wurde geleert. Ich dachte, dass es ein Codierungsfehler sein könnte, aber das scheint nicht so zu sein. Ich dachte auch an Namespace-Probleme, aber die PHP-Version auf dem Server ist korrekt (5.3.16)

Haben Sie eine Idee, woraus dieser Fehler stammen kann, oder in welche Richtung könnte ich suchen? Danke im Voraus.

+0

Ist es überhaupt möglich Klassen mit '\\' zu benennen? –

+1

überprüfen, ob die Datei BOM (Byte Order Mark) hat, wenn dies der Fall ist, konvertieren Sie Datei in reguläre UTF-8 ohne BOM –

+0

@ IvanHušnjak Es ist keine BOM - wir würden 'PHP Fataler Fehler: Namespace Deklaration Aussage muss die sehr sein erste Aussage im Skript in /blahblah/Foo/BarBundle/Entity/User.php in Zeile 2' dann – phihag

Antwort

0

Ich denke, es ist ein Codierungsproblem Ihrer Datei. Wenn Ihr Projekt beispielsweise UTF8 codiert ist, öffnen Sie Ihre Datei mit Ihrem Texteditor und wählen Sie die Option "Encoding" -> UTF-8 ohne BOM.

+0

Danke, aber das ist nicht das Problem: Die Datei ist bereits in UTF8 ohne BOM codiert. – ClemKeirua

+2

@Sybio hast du Kommentare der Frage gelesen? Es wurde bereits erwähnt – j0k

2

meisten Kodierungskonventionen, die ich mit streng gearbeitet erfordernLF (‚Unix-Stil‘, '\x0A') Zeilenenden in den Skripten. Und wer es schaffte, Code mit CRLF oder, Gott bewahre, CR einzureichen, musste einen königlichen Anteil des Schmerzes aushalten.)

Es mag nicht so eine große Sache, aber es kann Ihnen Stunden der Suche nach einem seltsamen Fehler sparen - wie in diesem Fall.

Verwandte Themen