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".
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
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
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
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.