@ no PHP

11 respostas
antitribus

Bom dia pessoal,
Mas uma dúvida me surgiu, pra quê serve o @ antes de algumas instruções em php como o exemplo abaixo:

@fopen('teste.txt' ,  "r");

qual a diferença para isto?

fopen('teste.txt' ,  "r");

grato!

11 Respostas

dtxk

se nao me engano, quanco colocar arroba(@) é para excluir qualquer tipo de erro. ou seja se der erro , não é para mostrar nada na tela.

abraços

antitribus

dtxk:
se nao me engano, quanco colocar arroba(@) é para excluir qualquer tipo de erro. ou seja se der erro , não é para mostrar nada na tela.

abraços

Obrigado por responder, mas acredito não ser isto, pelo fato de eu ter criado um teste tentando
fazer a leitura de um arquivo existente e um não existente, e não houve diferença nenhuma entre os dois.

Mesmo porque, isto é manipulado no php.ini em display_errors.

Continuo nesta dúvida

B

É justamente o que o dtxk falou… O ‘@’ serve para ignorar erros… se vc tentar abrir um arquivo inexistente, uma exceção será lançada e o programa será interrompido, mas se a instrução tiver o @, a a exceção será ignorada e o programa continua executando…

Faz um teste. Executa esse código primeiramente sem @ e depois com:

fopen('arquivoInexistente.txt', 'r');
echo 'teste';

Com o @, a palavra teste será exibida…

antitribus

bob_sponja:
É justamente o que o dtxk falou… O ‘@’ serve para ignorar erros… se vc tentar abrir um arquivo inexistente, uma exceção será lançada e o programa será interrompido, mas se a instrução tiver o @, a a exceção será ignorada e o programa continua executando…

Faz um teste. Executa esse código primeiramente sem @ e depois com:

fopen('arquivoInexistente.txt', 'r');
echo 'teste';

Com o @, a palavra teste será exibida…

Então, este teste eu fiz aqui, tanto com @, quanto sem e passou, será que isto não depende da versão do PHP?

Grato!

douglaskd

acho que no seu php ja esta configurado para nao mostrar os erros

eu sempre usei o @ para esconder warnings e sempre deu certo…

abrass

perdeu

por padrão os erros são exibidos no php.ini. testei seu exemplo aqui, abri um aquivo pra leitura q n existia deu erro:

colocando a @ some…rsrs mas n faça isso

se vc quiser transformar as linhas desse arquivo em um array utilize a função file(); é bem pratica :wink:

para mostrar os erros independente do q esta setado no php.ini utilize isso

error_reporting(E_ALL);

Anime

@ é gambiarra rsrs… :roll:

Anime

desculpe! :oops:

antitribus

De fato, se a exibição dos erros está sendo tratada no script, considero gambiarra também.
É que o código não era meu, no caso achei isto numa biblioteca de terceiros, e como nunca utilizei o “@” no PHP,
então surgiu esta curiosidade.

Mas muito obrigado à todos!

antitribus

Só mais uma pergunta,
Como eu dou este tópico como resolvido?
Abcs!

rebinho

antitribus:
Só mais uma pergunta,
Como eu dou este tópico como resolvido?
Abcs!

Para colocar como resolvido basta editar seu primeiro post… Vai aparecer o nome que você coloco ai coloque um [Resolvido] no título!

Agora uma dica… Se está começando a programar em PHP ou já programa se a opção de exibir erros estiver desabilitada acho que seria interessante habilitar.

Basta procurar por display_errors no arquivo de configuração e colocar como On pois acho que se aprender bastante vendo as msg de erro…

Abraço!

Criado 19 de janeiro de 2012
Ultima resposta 24 de jan. de 2012
Respostas 11
Participantes 7