Wyświetlanie błędów php. Wyświetlanie błędów na różnych poziomach w PHP


Zastanówmy się, jak włączyć/wyłączyć wyświetlanie błędów w witrynie. Poprzez panel administracyjny i poprzez plik htaccess.

Wskazanie błędu (Uwaga, ostrzeżenie, Błąd krytyczny) jest ważne i wymagana funkcja, dobrze, że ona istnieje! W przeciwnym razie webmasterzy spędzaliby miesiące na ręcznym wyszukiwaniu błędów w kodzie swojej witryny.

Jak włączyć wyświetlanie błędów z panelu administracyjnego Joomla 3?

W tym celu w panelu administracyjnym Joomla przejdź do zakładki „System – Ustawienia ogólne”.

Przejdź do zakładki „Serwer”, tam zobaczysz opcję „Komunikaty o błędach”. Wybierz tryb „Maksymalny”.

Ratować.

Następnie na stronach witryny pojawią się ewentualne komunikaty o błędach. Jest to przydatne, jeśli gdzieś na stronie widzisz biały ekran.

Po włączeniu wyświetlania komunikatów o błędach na białym ekranie zobaczysz rodzaj błędu i jego opis.
Korzystając z tego opisu, możesz znaleźć rozwiązanie w wyszukiwarce Yandex lub Google.

Włączenie wyświetlania błędów php poprzez plik konfiguracyjny.php

Jeśli nie masz dostępu do panelu administracyjnego lub on nie działa, możesz włączyć wyświetlanie błędów poprzez plik konfiguracji.php, który znajduje się w folderze głównym Twojej witryny.

Zawiera dyrektywę

public $error_reporting = "domyślny";

Aby włączyć wyświetlanie błędów, zmień ustawienie domyślne na maksymalne

Jak włączyć wyświetlanie błędów poprzez .htaccess

Jeśli nie masz Joomli, ale własny skrypt lub z jakiegoś powodu nie możesz włączyć komunikatów o błędach na dwa pierwsze sposoby, możesz to zrobić za pomocą pliku .htaccess, który również znajduje się w folderze głównym Twojej witryny.

Otwórz .htaccess - zwróć uwagę na kropkę z przodu. Jeśli nie masz takiego pliku, utwórz go.
W systemach CMS zwykle nazywa się to htaccess.txt i można go po prostu zmienić na .htaccess

Na samej górze dodaj linijkę:

php_flag display_errors włączone

I linia:

php_flag display_errors wyłączony

wyłącza wyświetlanie błędów.

Jakie są rodzaje komunikatów o błędach PHP?

Najczęstsze to:

Ogłoszenie- powiadomienie o drobnych błędach w kodzie. Zazwyczaj funkcjonalność witryny pozostaje nienaruszona.

Powiadomienia te pojawiają się po prostu w nagłówku.

Ostrzeżenie- ostrzeżenie o więcej poważne błędy. Czasami przy takim ostrzeżeniu pozostaje również funkcjonalność strony, czasem biały ekran.

Pracując ze stroną internetową, każdy programista spotkał się z sytuacją, gdy podczas włączania modułu, dodawania własnego kodu lub dokonywania innych zmian w witrynie pojawia się tzw. BIAŁY EKRAN ŚMIERCI(biały ekran śmierci), który zwykle jest spowodowany błędem PHP. Pierwszą czynnością programisty jest oczywiście wycofanie zmian, które doprowadziły do ​​tego błędu. Ale błąd wymaga naprawienia, co oznacza, że ​​musimy przyjrzeć się, co dokładnie powoduje jego wystąpienie.

Dobrze, jeśli programista ma możliwość przejrzenia logów Apache. Ale tu pojawiają się trudności: nie każdy hoster je utrzymuje i nie każdy programista ma do nich dostęp. W końcu, żeby je obejrzeć trzeba będzie udać się na serwer. Ale wszyscy programiści są leniwi, co oznacza, że ​​​​trzeba szukać prostszego rozwiązania. A to rozwiązanie polega na bezpośrednim wyświetlaniu błędów na ekranie.

Nie biorę pod uwagę strony w Drupalu, która pozwala wyświetlać błędy na ekranie (admin/ustawienia/raportowanie błędów), ponieważ... Nie uratuje Cię to przed białym ekranem. Wyświetla błędy, które psują moduły, a nie witrynę jako całość. Te. jeśli zapomnisz go umieścić (na przykład) isset w przypadku zmiennej, której nie można zdefiniować, na ekranie zostanie wyświetlony komunikat o błędzie. Ale jeśli zapomnisz wstawić średnik po wykonaniu operacji, Drupal nie będzie już wyświetlał tego błędu i zobaczysz biały ekran.

Istnieje kilka sposobów włączenia wyjścia błędów.

Metoda 1: Włączenie wyświetlania błędów poprzez php.ini

Jeśli masz dostęp (no cóż, jeśli) do serwera, to plik konfiguracyjny php.ini znajdź parametr zgłaszanie błędów i ustaw jego wartość na E_ALL.

Raportowanie błędów = E_ALL

Metoda 2. Włączenie wyświetlania błędów poprzez .htaccess

W katalogu głównym Drupala znajduje się plik .htaccess regulujący procesy ładowania strony. Aby włączyć przesyłanie wiadomości, otwórz go i dodaj następujące dwie linie:

Php_flag display_errors na php_flag display_startup_errors na

Metoda 3. Włączenie wyświetlania błędów poprzez plik Index.php

Zajmijmy się ponownie plikami w katalogu głównym Drupala, ale tym razem indeks.php. Tutaj, aby wyświetlić komunikaty, należy dodać error_reporting(7) przed linią z połączeniem bootstrap.ini:

Raportowanie_błędów(7); require_once "./include/bootstrap.inc" ;

Metoda 4: Włączenie wyświetlania błędów za pomocą pliku settings.php

Od razu powiem, że ta metoda działa tylko na Drupala 7. W folderze sites/default/ znajduje się plik settings.php. Otwórz go i dodaj te linie:

Raportowanie_błędów(-1); $conf ["poziom_błędu"] = 2; ini_set("błędy_wyświetlania" , TRUE ) ; ini_set („display_startup_errors” , TRUE ) ;

Podczas debugowania skryptów na PHP regularnie To kwestia uzyskania „białego ekranu” w przeglądarce. Co w większości przypadków oznacza przystanek Wykonanie PHP kodu z powodu błędu. Interpreter PHP umożliwia wysyłanie danych wyjściowych oficjalna informacja o błędach na ekranie, co znacznie ułatwia debugowanie. Ale domyślnie (w większości przypadków) to zachowanie jest wyłączone ze względów bezpieczeństwa, to znaczy komunikaty o błędach PHP nie są wyświetlane na ekranie.

W tym artykule powiem Ci, jak sprawić, by PHP wyświetlało komunikaty o błędach na ekranie monitora w oknie przeglądarki. Instrukcje obowiązują w przypadku, gdy korzystasz z serwera WWW Apache i jeśli PHP dla Twojej witryny jest podłączone jako moduł Apache.

Wyświetlanie błędów na ekranie należy włączyć tylko podczas debugowania witryny. Obecność takiego kodu może negatywnie wpłynąć na bezpieczeństwo aplikacji internetowej.

Włączenie wyświetlania błędów PHP na ekranie przy użyciu pliku .htaccess

To jest bardzo wygodnym sposobem do debugowania kodu PHP. Działa w prawie wszystkich przypadkach. W folderze ze skryptem na stronie umieszczamy plik .htaccess o następującej zawartości:

Php_flag display_errors na php_flag display_startup_errors na php_flag error_reporting E_ALL

  • błędy_wyświetlania- zawiera opcję wyświetlania błędów na ekranie wraz z resztą kodu.
  • display_startup_errors- włącza opcję wyświetlania błędów pojawiających się podczas uruchamiania PHP, gdy dyrektywa display_errors jeszcze nie działa.
  • zgłaszanie błędów- wskazuje, które błędy są wyświetlane według poziomu istotności. Gdy dyrektywa jest ustawiona na E_ALL wyświetlają się wszystkie błędy.

Włącz wyświetlanie błędów PHP na ekranie w kodzie pliku PHP

Ta metoda jest wygodna, ponieważ kontrolujesz wyświetlanie błędów na ekranie w samym skrypcie PHP. Parametry ustawione za pomocą funkcji ini_set() mają wyższy priorytet i dyrektywy nadrzędne php.ini I .htaccess. Umieść następujący kod na początku pliku PHP:

Ini_set("błędy_wyświetlania", 1); ini_set("display_startup_errors", 1); ini_set("raportowanie_błędów", E_ALL);

Włącz wyświetlanie błędów PHP na ekranie za pomocą pliku php.ini

Ta metoda jest istotna, gdy jesteś administratorem serwera. W pliku php.ini edytować następujące linie(dodaj jeśli to konieczne):

Display_errors = Włączone display_startup_errors = Włączone raportowanie błędów = E_ALL

Najlepszy sposób na wyświetlenie błędów PHP na ekranie

Moim zdaniem dla przeciętnego użytkownika najwygodniejszy w użyciu .htaccess, szczególnie jeśli masz więcej niż jeden plik PHP. Metoda numer 2 jest wygodna do debugowania jednego pliku php, aby nie wpływać na poziom wyjściowy błędów dla innych skrypty php. Opcja z php.ini Nadaje się tylko dla administratorów serwerów, ale jego działanie dotyczy wszystkich witryn znajdujących się na tym serwerze.

Podziękowanie

Podczas pisania tego artykułu korzystałem z następujących źródeł.

Bez względu na to, jak ostrożny i uważny jest programista sieciowy, podczas jego pracy możliwe są błędy i niedokładności. W rezultacie może to skutkować awarią witryny lub usług. Do debugowania podczas opracowywania projektu można włączyć wyświetlanie błędów w PHP.

Jak to działa?

PHP z pewnością reaguje na ten czy inny kod skryptu. W niektórych przypadkach – poprzez występy konieczna akcja, w innych wyświetla błąd. Mechanizm ten pomaga programiście szybko poprawić defekty w momencie implementacji sekcji kodu.

Jednak wyświetlanie błędów w PHP nie zawsze jest konieczne. Po zakończeniu opracowywania projektu funkcja ta jest wyłączona, aby uniknąć włamań lub nieautoryzowanego dostępu.

Ustawienia

Dla całej konfiguracji Interpreter PHP Odpowiada za to plik php.ini. Zawiera dyrektywę error_reporting, która określa wynik błędów w PHP. Jednakże, choć obejmuje obsługę wyjątków, za wyświetlanie ich w oknie przeglądarki odpowiada display_errors. Jeśli jest wyłączona, system zamiast błędu wyświetli pustą stronę.

Klasyfikacja wyjątków

Dane wyjściowe błędów w PHP można podzielić na kilka kategorii:

    błędy, które spowodują zatrzymanie działania skryptu. Tak zwane śmiertelne. Należą do nich E_ERROR, E_COMPILE_ERROR;

    błędy, które można naprawić. Ich wartościami dla dyrektywy error_reporting mogą być: E_WARNING, E_NOTICE i inne.

Warto rozważyć każdy typ bardziej szczegółowo i opisać jego funkcjonalność.

    E_BŁĄD. Zwykle ten typ odnosi się do błędów, których nie można szybko naprawić lub nie można kontynuować skryptu. Mogą one obejmować problemy z alokacją pamięci;

    E_OSTRZEŻENIE. Kod będzie nadal działać, ale wyświetli się ostrzeżenie wskazujące, że wystąpił jakiś błąd, którego kod jest wskazany w komunikacie. Niekrytyczne;

    E_UWAGA. Powiadomienia wskazujące, że wydarzyło się coś, co może spowodować błąd. Również nie jest to krytyczne dla wykonania kodu;

    E_USER_ERROR. Błędy generowane przez samego użytkownika;

    E_ALL. Dotyczy to wszystkich rodzajów błędów. Zazwyczaj, ta opcja domyślnie włączone podczas instalacji interpretera.

Jak włączyć wyświetlanie błędów w PHP

Metodologia wykorzystania mechanizmów błędów w PHP może się różnić w zależności od tego, gdzie kod jest używany - na hostingu czy na komputer lokalny. W drugim przypadku programista może skonfigurować swój serwer i wyświetlać go według własnego uznania, a mianowicie zmienić konfigurację w pliku php.ini. Wystarczy przekształcić dwie dyrektywy - display_errors i error_reporting do następującej postaci:

display_errors włączone

raportowanie_błędów E_ALL

Polecenia te pozwolą Ci wyświetlić wszystkie komunikaty o błędach bezpośrednio w oknie przeglądarki.

Jeśli rozwój jest prowadzony dalej hosting wirtualny, wówczas najczęściej funkcja wyświetlania błędów jest tam wyłączona ze względów bezpieczeństwa. Dlatego, aby go aktywować, będziesz musiał użyć pliku ustawień serwera Apache haccess. Zwykle znajduje się w katalogu głównym witryny. Musisz dodać do niego kilka linii za pomocą dowolnego edytora tekstu:

php_flag display_errors włączone

Raportowanie błędów wartości_php -1

Możesz także wyświetlić błędy bezpośrednio z kodu, używając funkcji ini_set(). Warto jednak wziąć pod uwagę, że po zakończeniu rozwoju serwisu, jego użytkowanie może spowodować problemy związane z bezpieczeństwem.

Zapisz do pliku

PHP pozwala na zapisanie wszystkich błędów, które wystąpią w specyficzne miejsce na Twoim dysku twardym. Aby dołączyć dane wyjściowe błędów PHP do pliku, możesz użyć trzech metod:

    edytuj plik php.ini. Tutaj musisz zdefiniować dwie linie. Pierwsza to log_errors = On, która faktycznie aktywuje opcję wyjściową. Drugi to dziennik_błędów = ścieżka/do żądanego/pliku.

    Zmień htaccess. Możesz także dodać do niego dwie linie. php_value log_errors „on” i php_value error_log ścieżka/do pliku.

    Użyj funkcji ini_set w wymaganym miejscu w kodzie.

Wniosek

Dane wyjściowe błędu w PHP - niezbędne narzędzie w debugowaniu kodu. Może jednak również stworzyć obszary potencjalnie wrażliwe. Dlatego należy używać tego mechanizmu ostrożnie i ostrożnie. Gdy witryna lub usługa przejdzie wszystkie etapy testów, należy zadbać o to, aby nie wyświetlała błędów, które atakujący mógłby wykorzystać w celu uzyskania dostępu do ważnych danych.

Dzisiaj przyjrzymy się kilku metodom włączania wyświetlania błędów w PHP.

Każdy, nawet najbardziej doświadczony programista regularnie popełnia błędy w kodzie. Niezależnie od tego, czy są to drobne literówki, czy poważne awarie algorytmu, nie ma to znaczenia, błędy śledzenia są bardzo ważną częścią rozwoju. Poniżej znajduje się kilka sposobów śledzenia błędów w kodzie PHP.

Metoda pierwsza. Włącz wyjście błędu w pliku php.

Możesz włączyć raportowanie błędów bezpośrednio w rzeczywistym pliku, w którym piszesz kod. Aby to zrobić, umieść na początku następujące linie:

ini_set("błędy_wyświetlania", 1); ini_set("display_startup_errors", 1); raportowanie_błędów(E_ALL);

ini_set("błędy_wyświetlania" , 1 ) ;

ini_set („display_startup_errors” , 1 ) ;

raportowanie_błędów(E_ALL);

Następnie wystarczy uruchomić plik, jeśli w kodzie są błędy, zostaną one wyświetlone na stronie.

Metoda druga. Włącz wyświetlanie błędów w pliku php.ini.

Można także włączyć wyświetlanie błędów w konfiguracje php, wtedy będą wyświetlane nie tylko przy uruchomieniu konkretny plik, i w ogóle pliki php. Aby to zrobić, znajdź plik php.ini w system plików swój serwer i dodaj do niego następujące linie:

error_reporting = E_ALL display_errors = Włączone display_startup_errors = Włączone

raportowanie_błędów = E_ALL

display_errors = Włączone

display_startup_errors = Wł

Po zapisaniu zmian w pliku zrestartuj serwer, a zmiany zaczną obowiązywać.

Metoda trzecia. Włącz wyświetlanie błędów w pliku .htaccess.

Innym sposobem włączenia błędów jest wprowadzenie zmian w pliku .htaccess. Aby to zrobić, znajdź ten plik w systemie plików witryny i dodaj do niego następujące wiersze:

php_value display_errors 1 php_value display_startup_errors 1 php_value error_reporting E_ALL

wartość_php display_errors1

wartość_php display_startup_errors1

php_value raportowanie_błędów E_ALL

Bądź ostrożny, jak niektórzy Systemy CMS mieć inny plik o nazwie htaccess.txt, który służy jako szablon do wprowadzania zmian. Musisz zmienić plik .htaccess, w przeciwnym razie zmiany nie będą miały żadnego wpływu na wynik błędu.

Te trzy sposoby umożliwiają włączenie wyjścia błędów w projekcie napisanym w PHP. Należy jednak pamiętać, że wyświetlanie błędów powinno być włączone tylko podczas programowania lub śledzenia błędu. Włączać tę funkcję Gdy Twój projekt już wszedł do produkcji jest to wysoce niepożądane, nie sądzę, żeby Twoi użytkownicy byli zadowoleni, gdy na stronie zamiast pożądanej treści wyświetliły się błędy.