Altere o relatório de erros do php para ocultar os avisos apenas para um site específico [Debian | Ubuntu]

6

Imagine alguns sites-enabled disponíveis em /etc/apache2/sites-available . (Apenas distribuições baseadas no Debian funcionam assim.)

É possível ignorar warning mensagens de scripts php de um site específico , sem tocar na% real htdocs

Normalmente, existem algumas soluções para alcançar algo relacionado:

  1. Adicione uma diretiva error_reporting() , por exemplo error_reporting(E_ERROR); para os scripts executados.
  2. Defina php_flags em .htaccess arquivos assim: php_flag display_errors off
  3. Use ini_set dentro de scripts:

    ini_set('display_errors', 'Off');
    ini_set('display_startup_errors', 'Off');
    error_reporting(0);
    
  4. Prefira @ às funções que emitem avisos ou erros.

  5. Altere php.ini para dizer realmente error_reporting = E_ALL ^ E_WARNING e display_errors = 1

No entanto, tudo isso significa tocar nos htdocs ou fazer com que a alteração seja aplicada globalmente. Imagine que o htdocs esteja montado como somente leitura. Como suprimir avisos (ou avisos) apenas para determinados sites?

Estou supondo que o Debian / Ubuntu tenha configurações específicas de a2ensite por uma razão e espero poder alterá-las. Há uma diretiva log_level na configuração do exemplo 'site available', mas trata a quantidade de mensagens registradas. Não as mensagens enviadas pelos scripts php.

A adição manual de seções em php.ini ou apache2.conf ou httpd.conf também funcionará. Se é possível.

Veja também:

por Redsandro 21.05.2013 / 15:54

3 respostas

11

Se você tiver acesso às configurações de vache do apache, é claro que você também pode usar diretivas php_flag dentro de um host virtual no diretório disponível para sites. Dessa forma, eles são aplicados apenas a esse vhost.

Adicione algo assim em seu host virtual:

<IfModule mod_php5.c>
    php_admin_flag display_errors off
</IfModule>

EDITAR:

Se você quiser apenas erros reais exibidos, você pode usar a diretiva php error_reporting com um valor inteiro que descreva os tipos de níveis de erro que você deseja exibir:

<IfModule mod_php5.c>
    php_admin_flag display_errors on
    php_admin_value error_reporting 22517
</IfModule>

Isso é equivalente a uma configuração

error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED;

no php.ini. Mais valores possíveis por exemplo aqui:

link

Calculadora do valor do relatório de erros:

link

    
por 21.05.2013 / 17:34
1

Eu adicionei:

<IfModule mod_php5.c>
 php_admin_flag display_errors on
 php_admin_value error_reporting 30711
</IfModule>

para / etc / apache2 / sites-enabled / work e isso funciona bem.

Sim, sei que devo corrigir esses avisos, mas estou trabalhando em um roteiro antigo e precisarei voltar a isso, pois agora isso resolveu meu problema e era o que o op estava procurando. Espero que isso ajude alguém.

    
por 25.02.2015 / 04:50
0

Não há como fazer isso sem o .htaccess ou aplicar a configuração globalmente. O Apache não pode "ver" arquivos fora de sua pasta raiz (htdocs) e os arquivos .htaccess só funcionam quando estão na pasta do site. O php_flag não funciona fora do .htaccess.

Então, basicamente, não é possível fazer em uma base site-a-site sem alguma modificação ou um arquivo .htaccess.

    
por 21.05.2013 / 17:04