2012-09-03 23 views
7

Tengo un error de PHP raro en un proyecto Symfony2 actual:extraño error inesperado T_STRING

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

Este es un error bastante estándar, por lo general vinculados a un par coincidente de "o'

Pero aquí. el código del archivo 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 

la línea <? php es la línea # 1. No hay cotizaciones, y lo más extraño viene del hecho de que este error sólo aparecen en mi servidor de ensayo : en 2 máquinas de desarrollo con copias locales del código, se comporta como se esperaba sin error ni advertencia. El archivo es el correcto, el caché fue vaciado. Pensé que podría ser un error de codificación, pero no parece ser esto. También pensé en problemas de espacio de nombres, pero la versión de PHP en el servidor es correcta (5.3.16)

¿Tiene alguna idea de qué puede provenir este error, o en qué dirección puedo buscar? Gracias por adelantado.

+0

¿Es posible incluso nombrar las clases con '\\'? –

+1

compruebe si el archivo tiene BOM (marca de orden de bytes), si lo hace, convierta el archivo a UTF-8 normal sin BOM –

+0

@ IvanHušnjak No es un BOM - veríamos 'PHP Error fatal: declaración de declaración de espacio de nombre tiene que ser el mismo primera declaración en el script en /blahblah/Foo/BarBundle/Entity/User.php en la línea 2' luego – phihag

Respuesta

0

Creo que es un problema de codificación de su archivo. Si su proyecto está codificado como UTF8, por ejemplo, abra su archivo con su editor de texto y elija la opción "Codificación" -> UTF-8 sin BOM.

+0

Gracias, pero este no es el problema: el archivo ya está codificado en UTF8 sin lista de materiales. – ClemKeirua

+2

@Sybio ¿Has leído los comentarios de la pregunta? Ya fue mencionado – j0k

2

mayoría de las convenciones de codificación que trabajé sea estrictamente necesario que usando LF ('estilo Unix', '\x0A') finales de línea en los guiones. Y quien logró enviar el código con CRLF o, Dios no lo quiera, CR tuvo que soportar una parte real del dolor.)

Puede parecer que no es un gran problema, pero puede ahorrarle horas de búsqueda de un error extraño, como en este caso.