2014-05-02 16 views
8

Czy error_reporting(0) to samo co ini_set('display_errors', 0)? Jeśli nie, jaka jest różnica?PHP error_reporting vs. display_errors

Interesuje mnie również strona bezpieczeństwa tego kodu? Czy mogę osiągnąć "so malicious users can't probe" z tym?

+1

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

+1

@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. –

Odpowiedz

19

NIE są one takie same, ale w użyciu mogą mieć taki sam wynik.

  1. 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.).

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

+0

Czy mogę z nimi współpracować? – mgulan

+2

Chcesz wyłączyć 'display_errors' w swojej aplikacji lub najlepiej' php.ini'. Zgłaszanie błędów wysyłanych do dziennika jest korzystne i nie powinno stanowić zagrożenia dla bezpieczeństwa. – AbraCadaver