NIE są one takie same, ale w użyciu mogą mieć taki sam wynik.
error_reporting
to poziom raportowania, BRAK przez WSZYSTKIE. Określa, jakie typy błędów są zgłaszane (E_NOTICE, E_WARNING, E_ALL itd.).
display_errors
to czy wyświetlać te błędy (wyjście do przeglądarki, CLI, etc ...), które są zgłaszane od 1.
Jeśli ustawisz error_reporting(E_ALL)
i ini_set('display_errors', '0')
nadal można uzyskać wszystkie błędy zgłoszone w pliku dziennika, ale nie jest wyświetlany.
Po wyświetleniu error_reporting(0)
nie wyświetlają się żadne błędy ani nie są ważne wartości display_errors
.
display_errors
powinien być wyłączony w aplikacjach produkcyjnych, najlepiej w php.ini
, aby informacje takie jak ścieżki plików, nazwy baz danych i nazwy użytkowników nie były wyświetlane. Zgłaszanie błędów wysyłanych do dziennika jest korzystne i nie powinno stanowić zagrożenia dla bezpieczeństwa.
Jedyną różnicą jest [this] (http://in3.php.net/manual/en/errorfunc.configuration.php#ini.display-errors): "* Chociaż display_errors może być ustawione w czasie wykonywania (z ini_set()), nie będzie miało żadnego wpływu, jeśli skrypt zawiera błędy krytyczne, ponieważ pożądana akcja środowiska wykonawczego nie zostanie wykonana. * ". –
@AmalMurali - to prawda w przypadku obu funkcji. Pliki PHP są przetwarzane całkowicie przed wykonaniem jakiegokolwiek kodu w tym pliku, więc dowolna funkcja, której użyjesz do włączenia raportowania błędów, * nie * zostanie wykonana, jeśli w tym samym pliku występują błędy analizy. –