Mam trochę kodu PHP. Po uruchomieniu pojawia się komunikat ostrzegawczy.
Jak mogę usunąć / ukryć / zignorować te komunikaty ostrzegawcze?
php
warnings
error-reporting
Alireza
źródło
źródło
Odpowiedzi:
Naprawdę powinieneś naprawić wszystko, co powoduje ostrzeżenie, ale możesz kontrolować widoczność błędów za pomocą
error_reporting()
. Aby pominąć komunikaty ostrzegawcze, możesz użyć czegoś takiego:źródło
E_ALL ^ E_WARNING
, włączenie wszystkich raportów błędów oprócz ostrzeżeń wydaje się lepszym wyborem argumentuerror_reporting
.Możesz umieścić @ przed wywołaniem funkcji, aby ukryć wszystkie komunikaty o błędach.
źródło
dns_get_record
wyrzucają ostrzeżenia. Twój kod może zrekompensować ostrzeżenie, ale nadal je wyrzuca. Wyłączenie raportowania błędów działa na serwerze produkcyjnym, ale nie na serwerze deweloperskim. W przypadku generowania treści XML ostrzeżenie spowoduje, że przeglądarka nie będzie renderowana, ponieważ serwer wysyła zniekształcony kod XML spowodowany ostrzeżeniem. Czasami chcesz tego podczas programowania, ale nie z powodu czegoś spowodowanego tymczasowym błędem wyszukiwania DNS, który już kompensujesz.Aby ukryć ostrzeżenia, pozostawiając włączone wszystkie inne raporty błędów:
źródło
Jeśli nie chcesz wyświetlać ostrzeżeń i błędów, użyj
Raportowanie błędów - podręcznik PHP
źródło
Jeśli chcesz ukryć ostrzeżenia i niektóre inne typy błędów (na przykład powiadomienia) podczas wyświetlania wszystkich innych błędów, możesz:
źródło
w Core Php, aby ukryć komunikat ostrzegawczy, ustawić raportowanie błędów (0) w górnej części wspólnego pliku dołączania lub pojedynczego pliku.
W Wordpress ukryj Ostrzeżenia i powiadomienia dodaj następujący kod w pliku wp-config.php
źródło
Nie do końca odpowiadam na pytanie, ale myślę, że w niektórych sytuacjach jest to lepszy kompromis:
Miałem komunikat ostrzegawczy w wyniku instrukcji printf () w bibliotece innej firmy. Wiedziałem dokładnie, co było przyczyną - tymczasowe obejście, podczas gdy strona trzecia naprawiła swój kod. Zgadzam się, że ostrzeżenia nie powinny być pomijane, ale nie mogłem zademonstrować swojej pracy klientowi, gdy na ekranie pojawia się komunikat ostrzegawczy. Moje rozwiązanie:
Ostrzeżenie było nadal w źródle strony jako przypomnienie dla mnie, ale niewidoczne dla klienta.
źródło
ob_start()
iob_end_clean()
zamiast tego. W ten sposób rzeczy nie są nawet wysyłane do przeglądarki (co robi tutaj).Robię to w następujący sposób w moim php.ini :
Rejestruje tylko błędy krytyczne i brak ostrzeżeń.
źródło
Myślę, że lepszym rozwiązaniem jest konfiguracja .htaccess W ten sposób nie musisz zmieniać kodu aplikacji. Oto wytyczne dla Apache2
źródło
Możesz wyłączyć ostrzeżenie za pomocą raportowania błędów, ale o wiele lepszym sposobem jest poprawienie skryptu w pierwszej kolejności.
Jeśli nie wiesz jak, edytuj swoje pytanie i pokaż nam odpowiedni wiersz oraz wyświetlone ostrzeżenie.
źródło
Odpowiedź już jest u operatora kontroli błędów, ale nie ma wyjaśnienia. Możesz używać
@
operatora z każdym wyrażeniem i ukrywa ono błędy (oprócz błędów krytycznych).Do debugowania jest to szybka i idealna metoda. Ale nigdy nie powinieneś używać go w wersji produkcyjnej ani na stałe dołączać do swojej lokalnej wersji. Zapewni ci wiele niepotrzebnego podrażnienia.
Zamiast tego należy rozważyć:
1. Ustawienia raportowania błędów wymienione w zaakceptowanej odpowiedzi.
lub z ustawień PHP INI
2. Łapanie wyjątków
źródło
Aby zignorować wszystkie ostrzeżenia, użyj tego przykładu na górze kodu:
źródło