Eu recebi um erro:
Parse error: syntax error, unexpected end of file in the line
Com este código:
<html>
<?php
function login()
{
// Login function code
}
if (login())
{?>
<h2>Welcome Administrator</h2>
<a href=\"upload.php\">Upload Files</a>
<br />
<a href=\"points.php\">Edit Points Tally</a>
<?php}
else
{
echo "Incorrect login details. Please login";
}
?>
Some more HTML code
</html>
Qual é o problema?
php
html
parse-error
pratnala
fonte
fonte
short_tags
em seu php.ini em AMBOSapache
ecli
configuraçõesRespostas:
Você deve evitar isso (no final do seu código):
e isto:
Você não deve colocar colchetes diretamente perto da
php
tag abrir / fechar , mas separá-lo com um espaço:Também evite
<?
e use<?php
fonte
<? } ?>
vez de<?php } ?>
.Eu tive o mesmo erro, mas o corrigi modificando o
php.ini
arquivo.Encontre o seu arquivo php.ini em Cara, cadê meu php.ini?
depois abra-o com seu editor favorito.
Procure uma
short_open_tag
propriedade e aplique a seguinte alteração:fonte
<? ?>
(nota, a faltaphp
). Tenho a tarefa de adicionar ou alterar recursos, e normalmente não é uma boa ideia simplesmente mudar tudo apenas para um ou dois recursos. Sua resposta realmente ajudou.Existem dois métodos diferentes para contornar a sintaxe do erro de análise.
Método 1 (seu arquivo PHP)
Evite no seu arquivo PHP o seguinte:
Certifique-se de colocá-lo assim
Método 2 (arquivo php.ini)
Também existe uma maneira simples de resolver seu problema. Procure o
short_open_tag
valor da propriedade (Use no seu editor de texto comCtrl + F
!) E aplique a seguinte alteração:para
De acordo com a descrição das diretivas principais do php.ini ,
short_open_tag
permite que você use a tag curta (<?
), embora isso possa causar problemas quando usado com xml (<?xml
não funcionará quando isso estiver ativado)!fonte
Basta ir ao php.ini e encontrar
short_open_tag= Off
setshort_open_tag= On
fonte
Procure por quaisquer loops ou declarações que não foram fechados.
Eu tive esse problema quando deixei um php foreach: tag não fechado.
Fechá-lo usando o seguinte resolveu o erro de sintaxe:
unexpected end of file
Espero que ajude alguém
fonte
Verifique se você encerrou sua aula.
Por exemplo, se você tem classe de controlador com métodos e, por acidente, exclui o colchete final, que fecha toda a classe, você receberá esse erro.
fonte
Além disso, procure um comentário // que quebre a chave de fechamento
if (1==1) { //echo "it is true"; }
a chave de fechamento não fecha adequadamente a seção condicional e o php não processa adequadamente o restante do código.
fonte
Evite isso também,
<? } ?>
certifique-se de colocar<?php } ?>
fonte
Vi alguns erros, que corrigi abaixo.
Isto é o que eu entendi como errado:
É assim que eu teria feito:
fonte
No meu caso, o culpado foi a
<?php
tag de abertura solitária na última linha do arquivo. Aparentemente, ele funciona em algumas configurações sem problemas, mas causa problemas em outras.fonte
Além disso, esteja atento aos identificadores de fechamento do heredoc.
Exemplo inválido:
Isso lançará uma exceção semelhante à seguinte:
onde o número 5 pode ser o último número da linha do seu arquivo.
De acordo com o manual do php :
TLDR : Os identificadores de fechamento NÃO devemser recuados.
Exemplo válido:
fonte
Além disso, outro caso em que é difícil identificar é quando você tem um arquivo com apenas uma função, sei que não é um caso de uso comum, mas é irritante e teve que detectar o erro.
O arquivo acima retorna o erro,
Parse error: syntax error, unexpected end of file in
enquanto o abaixo não.fonte
Para mim, a causa mais frequente é um caractere omitido, para que uma função ou se o bloco de instruções não seja finalizado. Corrijo isso inserindo um caractere} após minhas edições recentes e movendo-o a partir daí. Eu uso um editor que pode localizar colchetes de abertura correspondentes a um colchete de fechamento, para que esse recurso também ajude (ele localiza a função que não foi finalizada corretamente).
Podemos esperar que algum dia os intérpretes e compiladores de idiomas façam algum trabalho para gerar melhores mensagens de erro, pois é tão fácil omitir um colchete.
Se isso ajudar alguém, vote na resposta.
fonte
Você não pode dividir as instruções IF / ELSE em dois blocos separados. Se você precisar que o código HTML seja impresso, use echo .
fonte
Para complementar outras respostas, também pode ser devido à minificação automática do seu script php se você estiver usando um cliente ftp como o FileZilla. Verifique se o tipo de transferência está definido como Binário e não ASCII ou automático. O tipo de transferência automática ASCII ou pode reduzir o seu código php levando a esse erro.
fonte
Se você estiver usando parse_ini_file ($ file) ou uma rotina estiver exibindo um arquivo .ini, verifique se os dados estão citados no arquivo ini. Dados não citados causarão esse erro. Ex; data1 = teste causará o erro, dados1 = "teste" não causará.
fonte
No meu caso, copiei o conteúdo para outro arquivo, excluí o arquivo php e criei um novo, copiei o conteúdo novamente para o mesmo arquivo e funcionou.
fonte