[PHP] Wyłączanie komunikatów notice

Problem stary jak świat. Po odpaleniu aplikacji (często na innym serwerze) wyskakuje szereg komunikatów typu notice (podkreślmy od razu bardzo ważną rzecz: notice to nie błąd). W tym wypadku przedstawiane są dwie szkoły: jedna mówi, że aplikacja nie powinna generować żadnych komunikatów, a druga uznaje, że skoro notice błędem nie jest, to może wystąpić, bo to tylko informacja dla programisty. Niezależnie od tego, którą z nich wyznajemy, ukrycie notice (jak i  błędów) jest konieczne w środowisku produkcyjnym, ze względów bezpieczeństwa.

Wykonanie tego zadania sprowadza się do dodania jednej linijki gdzieś na początku pliku PHP.

<?php
error_reporting(E_ALL ^ E_NOTICE);

To sposób jednorazowy/doraźny. Jeżeli chcemy załatwić sprawę na stałe i mamy taką możliwość to po prostu edytujemy plik php.ini i tak jak wyżej zmieniamy wartość dyrektywy error_reporting na E_ALL ^ E_NOTICE.

PS: Wiem, ze problem jest oklepany, ale będzie gdzie odsyłać kolejnych ludzi mówiących o "błędach notice".

4 komentarze do “[PHP] Wyłączanie komunikatów notice

  1. Według mnie komunikatów notice powinno być jak najmniej a resztę ukryć dla naszego bezpieczeństwa i basta ;)

    Co do podlinkowania wpisu osobom, które uważają, że notice to błąd to będziesz miał spory ruch na tej stronie ;D

    • Sobak pisze:

      Wolę odsyłać ludzi tutaj i niech dostaną kompleksową odpowiedź niż za każdym razem tłumaczyć, że po pierwsze to nie błąd, a po drugie to może wyłączyć to tak i tak, a po trzecie… Tak jest łatwiej dla mnie i dla nich :D

  2. Osobiście uważam, że raportowanie błędów na serwerze produkcyjnym powinno być wyłączone. Po co informować użytkowników takich jak Franky, czy ja w tym momencie, że coś nie wyszło? Informacja jest dla webmastera, więc wystarczy zapisać w logach, a skrypt niech leci dalej ;)

    • Sobak pisze:

      Dokładnie tak
      „ukrycie notice (jak i błędów) jest konieczne w środowisku produkcyjnym”
      skrypt leci dalej albo w przypadku poważniejszego błędu niech przerywa pracę, ale podaje prosty komunikat, a szczegóły techniczne zostawia osobie kompetentnej i przeznaczonej do ich poznania.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *