• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Knitter

[Resolvido]Como evitar que erros ocorridos em scripts php estraguem a página?

6 mensagens neste tópico

Boas,

Tenho estado a tentar descobrir uma forma de impedir que os erros de um determinado script não seja lançados para o browser cliente mas não tenho uma forma que funcione bem.

Por exemplo, quando se usa a função mail(), caso o mail seja enviado para o servidor smtp a função devolve o valor verdadeiro, caso não seja, devolve o valor falso, para controlo essa informação é suficiente, mas ao mesmo tempo, se o servidor não estiver acessível, além de devolver o valor falso o php envia os erros para o browser. Como posso evitar isso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o mais simples é usar a função error_reporting(0);, que vai desactivar por completo a notificação de erros. Colocas isso no inicio do script, ou num sitio onde eventualmente pode ocorrer um erro. Se bem que o ideal é tomar precauções para esses casos, e desactivar apenas a notificacao de erros para um determinado comando. Se nao me engano, qualquer comando pode ser chamado com uma @ antes, de forma a suprimir os erros, por exemplo "@mail(...);".

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E o uso do @ não suprime o valor que a função devolve? É que, no caso do e-mail, estou a usar o valor de retorno para fazer o controlo de erros e não quero ver esse controlo desaparecer.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Caso @mail(...) não funcione, talvez isto safe assim um bocado à javardolas:

# ...
error_reporting(0);
mail(....);
error_reporting(/*original*/);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E o uso do @ não suprime o valor que a função devolve?(...)

Não, só suprime a notificação de erros. É fixe.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Convidado
Este tópico está fechado a novas respostas.