Pergunta
Aqui está o meu código:
echo 'foo';
error_reporting(E_ALL);
echo 'this line doesnt end in a semi colon'
echo 'i should get an error here';
Quando eu corro isso, não recebo erros.
Não tenho certeza de como isso pode ser?
Solução
ini_set('display_errors', 1);
Observe que, se você fizer isso no arquivo que possui o erro de sintaxe, ele não funcionará, pois nunca será executado. Você também pode definir isso true em php.ini (não recomendado para servidores de produção) ou se você usar o Apache, em .htaccess com:
php_flag display_errors 1
Outras dicas
Error_reporting Diretiva não o ajudará a mostrar mensagens de erro na tela. É responsável por que erro para mostrar, não Onde.
Se o seu PHP executar como módulo Apache (provavelmente ele o faz), adicione a seguinte linha em .htaccess
Arquivo:
php_value display_errors 1
Quando você mudar para a produção, mude para
php_value display_errors 0
php_value log_errors 1
e assista -os no log de erros.
Você tem algum tipo de ganchos de desligamento, funções de manipulação de erros ou coletores de exceção global em execução?
Erros de sintaxe podem ser peculiares em grandes estruturas :)