Faça uma pergunta »

Parse error: syntax error, unexpected $end

Abril 2015

Quandro programamos em Php, um dia, inevitavelmente, nos encontramos face a este erro grave:
Parse error: syntax error, unexpected $end in Command line code on line 1

Ou seja: "Erro de análise do código: Há um erro de sintaxe, fim inesperado do código".


Qual é a causa deste erro?


Na verdade, este erro significa que a PHP acabou de analisar o seu código, mas que você esqueceu de fechar um símbolo em algum lugar na sua página, ou naquelas que foram incluídas.

Concretamente, isto acontece quando:
  • Por exemplo, você esqueceu de fechar as aspas, logo, a PHP continua a analisar o seu código até encontrar as aspas de fechamento, que ela não pode encontrar ...
  • Você esqueceu de fechar uma chave, assim, a partir da última chave de abertura, a PHP considera todo o código que segue como parte de um bloco que nunca acaba...
  • Você esqueceu de fechar um parêntese, então, a partir do último parêntese aberto, a Php considera todo o código que segue como parte de um bloco específico (condição, argumentos de função etc...) que nunca acaba.
  • Você esqueceu um ponto e vírgula, então para a PHP há uma declaração em seu código que não tem fim.

Portanto, não se refira à linha marcada pela Php como sendo a origem do erro. Php dirá que o problema vem da última linha, enquanto que originalmente ele pode se encontrar em qualquer lugar: ou na página em questão, ou nas páginas que foram incluídas.

Exemplos de códigos que causam este erro


Veja alguns exemplos de códigos susceptíveis de causar este erro.

Esquecer a chave de fechamento:
<? 
if ($condition){ 
     echo "vrai"; 
?>


Esquecer de fechar as aspas:
<? 
echo "test; 
?> 


Esquecer de fechar um parêntese:
<? 
mysql_query("gnagnagna", "bipbip", "istonãoéumservidorsql.com" ; 
?> 


Esquecer um ponto e vírgula:
<? 
if ($test){ 
    echo '1' 
} 
?> 

Como corrigir / evitar este erro


Geralmente, este erro é causado pela má organização da apresentação do seu código. Sobretudo, não se esqueça de bem entalhar o seu código, para distinguir visualmente os diferentes blocos.

Exemplo de um código próprio:
//Equivalent de array_reverse() 
function inverse_tabela($tabela) 
{ 
    $ret = array(); 
    if (is_array($tabela) ){ 
        for($i=sizeof($tabela) - 1; $i >= 0; $i++) 
        { 
            $ret[] = $tabela[$i]; 
        } 
    } 
    return $ret; 
}

Exemple de um código não entalhado, mais difícil de ser destravado:
function inverse_tabela($tabela) 
{ 
$ret = array(); 
if (is_array($tabela) ){ 
for($i=sizeof($tabela) - 1; $i >= 0; $i++) 
{ 
$ret[] = $tabela[$i]; 
} 
} 
return $ret; 
}


Se você encontrar esse erro, saiba que ele não está, necessariamente, no fim do seu código, ou seja, o esquecimento de uma chave pode acontecer no início do seu código, mesmo se o seu arquivo tiver 1000 linhas.

Boa sorte!


Tradução feita por Lucia Maurity y Nouira
Para uma leitura offline, é possível baixar gratuitamente este artigo no formato PDF:
Parse-error-syntax-error-unexpected-end.pdf

A ver igualmente

Na mesma categoria

Parse error: syntax error, unexpected $end
Por kilian em 21 de maio de 2008
Artigo original publicado por kilian. Tradução feita por pintuda.
Este documento, intitulado « Parse error: syntax error, unexpected $end »a partir de Kioskea (pt.kioskea.net) está disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta página, nas condições estipuladas pela licença, como esta nota aparece claramente.