Como Desativar o error_log do PHP (Sem Depender do .htaccess)

Em muitos projetos PHP, o log de erros (error_log) acaba virando um arquivo gigantesco — especialmente em aplicações antigas ou sistemas com centenas de includes.
Mas nem sempre você quer ou pode alterar o php.ini ou .htaccess.
A boa notícia é que dá pra resolver direto no código, de forma segura e limpa.


O cenário clássico

Quase todo projeto PHP tem aquele arquivo comum, presente em todos os scripts — algo como conecta.php, config.php ou bootstrap.php.
Esse é o lugar ideal pra controlar a exibição e o log de erros.


O código

<?php
// conecta.php

// Controle de erros global
error_reporting(0);
ini_set('display_errors', '0');
ini_set('display_startup_errors', '0');
ini_set('log_errors', '0');
ini_set('error_log', '/dev/null');

// ... seu código de conexão, includes, etc ...

Com isso, o PHP:

  • não mostra erros na tela,
  • não grava logs em arquivo,
  • e não envia nada pro error_log global do servidor.

Alternando entre debug e produção

Se quiser manter o controle entre ambientes:

<?php
define('MODO_DEBUG', false); // true para desenvolvimento

if (MODO_DEBUG) {
    error_reporting(E_ALL);
    ini_set('display_errors', '1');
    ini_set('log_errors', '1');
    ini_set('error_log', __DIR__ . '/php_error.log');
} else {
    error_reporting(0);
    ini_set('display_errors', '0');
    ini_set('log_errors', '0');
    ini_set('error_log', '/dev/null');
}

Assim, você tem logs no ambiente de desenvolvimento e total silêncio em produção.


Aplicando em frameworks conhecidos

WordPress
Edite o arquivo wp-config.php antes da linha que diz “That’s all, stop editing!”:

@ini_set('display_errors', 0);
@ini_set('log_errors', 0);
@ini_set('error_log', '/dev/null');

Laravel
No arquivo .env, defina:

APP_DEBUG=false
LOG_CHANNEL=null

ou, se quiser ir além, no bootstrap/app.php:

ini_set('log_errors', '0');
ini_set('error_log', '/dev/null');

Projetos próprios (MVC, APIs, etc.)
Coloque no index.php ou num bootstrap.php comum, antes de carregar qualquer biblioteca.


Resumo rápido

  • .htaccess só funciona com mod_php;
  • em FPM, use .user.ini ou ini_set();
  • o jeito mais prático e portátil é controlar tudo direto no PHP.
Rolar para cima