Neste tutorial, nós estamos indo olhar alguma dos erros comuns de PHP que ocorrem e de como resolvê-los.
Um erro analisar gramaticalmente ocorre quando o formato de seu código de PHP está incorreto. Para o exemplo, o seguinte código:
<?php for($i=1;$i<10;$i++){$output = "Iteração
Atual: ". $i. "< Br >" eco #;
}? >
retornará um erro similar ao seguinte:
Analise gramaticalmente o erro: analise gramaticalmente o erro, T_ECHO inesperado em c:\webserver\test2.php na linha 4
|
|
Esta mensagem de erro é mostrada porque há um semicolon faltante na extremidade da terceira linha do exemplo precedente. A mensagem diz-lhe que PHP não esperava o comando do eco na linha 4. Isto é porque esperou lá ser um semicolon na extremidade de linha 3. Na maioria das vezes quando você começa este erro, a razão serão um problema com a linha precedente, tal como o semicolon faltante como no exemplo precedente.
Este erro ocorre também com cintas, {}, para o exemplo com o seguinte código:
<?php for($i=1;$i<10;$i++){$output = "Iteração
Atual: ". $i. "< Br >"; o eco de
if($output==5){"isto é a quinta iteração"; }}}? >
qual retornará a mensagem de erro
Analise gramaticalmente o erro: analise gramaticalmente erro, inesperado ‘}’ em c:\webserver\test2.php na linha 8
Isto é causado por uma cinta de fechamento extra,}, na linha 8. Embora seja simples ver o problema no bloco curto precedente do código, pode ser muito mais duro com o código complicado que contem muitos laços aninhados ou se as indicações, e forem duros combinar as cintas da abertura às cintas de fechamento.
Para encontrar rapidamente o problema, você pode usar as cintas do contrapeso do MX de Dreamweaver comanda, que está no menu da edição. Você pode colocar o cursor em uma linha do código, seleciona o comando das cintas do contrapeso, e destacará todas as linhas do código para esse bloco da cinta da abertura à cinta de fechamento. Verificando as camadas de seu código com o contrapeso as cintas comandam, você pode rapidamente encontrar onde há uma cinta faltante ou extra.
Esta seção explica o que fazer se você receber uma mensagem em seu Web page como um do seguinte:
| Aviso | Índice undefined: ação em \home\www\login.php na linha 25 |
| Aviso | Variável undefined: mensagem em home\www\login.php na linha 52 |
Estas mensagens confundem freqüentemente povos, porque olham como mensagens de erro e podem ocorrer mesmo com código que trabalha perfeitamente. As mensagens não são realmente erros; instead, são classificados como as "observações," que o alertam às situações onde não há realmente um erro que pare o código de trabalhar. O que a mensagem diz você é que o variável mencionado não estêve definido especificamente usando uma indicação de PHP var.
Como um exemplo, olhe os seguintes dois blocos do código:
<?php var #; $username = # ' ]; ? > e: <?php $username = # ' ]; ? >
Ambos os blocos do código têm resultados idênticos, mas o segundo bloco do código trará acima uma mensagem similar a essas mostradas previamente, porque nós não definimos especificamente o variável #. PHP trabalha definindo suas variáveis primeiramente, que os meios ele podem o alertar se você soletrar erradamente uma variável em seu código, porque a variável será nova e definida não previamente.
Há duas soluções a este problema. O primeiro deve atravessar para trás seu código e certificar-se de que cada variável está definida especificamente. A segunda opção deve parar observações de ser indicado, porque são frequentemente mais problema do que são valor. Você pode fazer este adicionando o seguinte código ao alto de cada página que tem o erro:
<?php que error_reporting (E_ALL & ~ E_NOTICE); ? >
Isto diz PHP para mostrar todas as mensagens e avisos de erro mas para não mostrar as observações. Para fazer permanentemente isto, mude o ajuste error_reporting em sua lima de php.ini ao ajuste precedendo.
Esta é uma outra mensagem de erro que ocorra freqüentemente, especial ao usar bolinhos ou sessões, e seja similar à seguinte mensagem:
Não pode modificar a informação de encabeçamento - encabeçamentos emitidos já perto (saída começada em /home/web/newtest.php:3) em /home/web/test.php na linha 5
O problema é causado pelos espaços em branco antes da função do encabeçamento. A função do encabeçamento de PHP é usada dirigir de novo o usuário a uma outra página, que faça emitindo comandos no encabeçamento da página ao browser, dizendo o para ir à página nova. Entretanto, uma vez que um encabeçamento foi emitido ao browser, você pode nenhumas funções mais longas do uso que alcançam o encabeçamento, tal como a função do encabeçamento. Se qualquer coisa for emitido ao browser que não é uma função especial do encabeçamento, o encabeçamento é closed e tudo mais é suposto para ser HTML para o Web page. Assim porque é isto acontecer com o código precedente?
O problema ocorre porque há uma linha em branco (a linha 2) que é emitida ao browser. Isto faz com que o encabeçamento seja fechado, assim que a função do encabeçamento falha, porque pode não mais por muito tempo escrever ao encabeçamento. Entretanto, nivele se você remover a linha em branco na linha 2, você começará a mesma mensagem de erro. Isto é porque há dois espaços no fim do? > Tag na linha 1. Estes devem também ser suprimidos, porque outra vez serão emitidas ao browser e fecharão o encabeçamento. Estes espaços na extremidade de linhas podem ser duros de manchar-se porque são invisíveis!
Há um método que você pode se usar, embora, para fazer encontrá-los mais fáceis. Se você colocar seu cursor no fim de cada linha e esquerdo-clique e mover a direita do rato, todos os espaços na extremidade da linha estarão destacados, como mostrado no tiro precedente da tela. Os espaços podem então ser removidos.
Se o código for testado agora outra vez, deve trabalhar corretamente.
Este erro pode também ocorrer se output nao incluido em Tag de PHP em alguns incluir limas para a página. Assim se seu código principal da página olhar muito bem e você estiver começando ainda o erro, a etapa seguinte será verificar com alguns inclui limas os usos da página. Frequentemente, o erro é causado por uma linha nova depois que o Tag final de PHP na lima incluir, que deve ser removida se presente.
|
|