KWALIFIKACJA INF3 - STYCZEŃ 2016

PYTANIE NR 38.
Błędy interpretacji kodu PHP są zapisywane
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Błędy wykonania skryptu PHP mogą być zapisywane do pliku logu, jeśli w konfiguracji włączono logowanie (np. ustawienia w php.ini). To nie jest "podgląd zdarzeń Windows" ani okno edytora – IDE co najwyżej wyświetli komunikat. Brak wyświetlenia w przeglądarce nie oznacza, że interpreter je ignoruje.

Pełne wyjaśnienie:

W PHP trzeba rozróżnić dwie rzeczy: wyświetlanie komunikatów błędów oraz ich zapisywanie do logów. Poprawna odpowiedź wskazuje, że błędy interpretacji/wykonania mogą być zapisywane w logu, o ile administrator lub programista włączy odpowiednie ustawienia konfiguracyjne (typowo w pliku php.ini lub w konfiguracji środowiska uruchomieniowego).

W praktyce odpowiadają za to dyrektywy takie jak log_errors (czy błędy mają być logowane) oraz error_log (gdzie mają trafić). Niezależnie od tego osobno istnieje mechanizm display_errors, który wpływa na to, czy komunikaty będą pokazywane użytkownikowi w odpowiedzi HTTP. Na produkcji często wyświetlanie jest wyłączone, a logowanie włączone.

Dlaczego pozostałe odpowiedzi są nieprawidłowe?

  • Podgląd zdarzeń systemu Windows nie jest standardowym miejscem, do którego PHP zapisuje swoje błędy wykonania. PHP typowo loguje do wskazanego pliku lub do logu serwera WWW/menedżera procesu, zależnie od konfiguracji.
  • Okno edytora może pokazać błędy składni, linting lub wynik uruchomienia w terminalu, ale nie jest to definicyjne miejsce zapisu błędów działania PHP na serwerze.
  • Stwierdzenie, że błędy są ignorowane, jest mylące: interpreter błędy obsługuje (np. przerywa wykonanie przy błędach krytycznych, zgłasza warning/notice), a brak komunikatu w przeglądarce zwykle wynika z ustawień wyświetlania lub obsługi błędów, nie z ignorowania.

Wskazówka egzaminacyjna: jeśli pytanie dotyczy "gdzie są zapisywane", szukaj odpowiedzi związanej z logami i konfiguracją, a nie z narzędziem edycyjnym czy interfejsem systemu operacyjnego.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Log błędów PHP to zapis komunikatów o błędach, ostrzeżeniach i wyjątkach generowanych podczas uruchamiania skryptów. Dzięki niemu można diagnozować problemy bez wyświetlania szczegółów użytkownikowi. Miejsce zapisu zależy od konfiguracji środowiska PHP.
Najczęściej włącza się to przez konfigurację, np. dyrektywę log_errors oraz ustawienie docelowego pliku w error_log. Zmiany mogą być wprowadzone w php.ini lub w konfiguracji serwera/uruchomienia. Po zmianie zwykle potrzebny jest restart usługi.
Bo wyświetlanie błędów może być wyłączone (często na produkcji), a aplikacja może zwracać ogólny komunikat lub kod 500. Brak komunikatu na stronie nie znaczy, że błąd nie wystąpił. Wtedy kluczowe jest sprawdzenie logów PHP i logów serwera WWW.
display_errors kontroluje, czy komunikaty błędów są wysyłane w odpowiedzi (np. HTML) do użytkownika. To nie to samo co zapisywanie do logu. W środowisku testowym bywa włączone, a w produkcyjnym zwykle wyłączone, aby nie ujawniać szczegółów aplikacji.
log_errors odpowiada za to, czy PHP ma logować błędy. error_log wskazuje, gdzie te błędy mają trafić (np. plik). Można mieć sytuację, że logowanie jest wyłączone albo włączone, ale bez prawidłowo ustawionej lokalizacji zapisu.
Najpierw sprawdza się log błędów PHP (konfigurowany w PHP) oraz log serwera WWW (np. log błędów usługi). HTTP 500 zwykle oznacza błąd po stronie serwera, a dokładna przyczyna jest w logach. Często to błąd krytyczny lub wyjątek nieobsłużony.
Zwykle nie. IDE może podkreślać błędy składni, uruchamiać linter lub pokazywać wynik uruchomienia w terminalu, ale "miejsce zapisu" błędów zależy od konfiguracji PHP i serwera. Przy aplikacji webowej kluczowe są logi po stronie serwera, nie edytor.
Na serwerze produkcyjnym. Wyświetlane błędy mogą ujawniać ścieżki plików, fragmenty konfiguracji i szczegóły aplikacji, co zwiększa ryzyko bezpieczeństwa. Zamiast tego stosuje się logowanie błędów do pliku i kontrolowany dostęp administracyjny do logów.
Można sprawdzić aktywne ustawienia konfiguracji (np. przez informacje o konfiguracji środowiska uruchomieniowego) oraz wykonać test generujący warning/notice i zobaczyć, czy pojawia się wpis w pliku logu. Ważne jest też, czy proces PHP ma prawa zapisu do pliku.
Najczęstsze powody to wyłączone logowanie, zła ścieżka do pliku logu, brak uprawnień do zapisu, logowanie kierowane do innego miejsca (np. log usługi), albo filtrowanie poziomu błędów. Warto też sprawdzić, czy błąd nie jest przechwytywany przez obsługę wyjątków aplikacji.
info

Statystycznie 59% uczniów zna prawidłową odpowiedź. średnie

Według specjalistów z branży: "Błędy wykonania skryptu PHP mogą być zapisywane do pliku logu, jeśli w konfiguracji włączono logowanie (np. ustawienia w php.ini)."

Źródła:

  • PHP Manual: Error Handling and Logging – opis dyrektyw log_errors i error_log: https://www.php.net/manual/en/errorfunc.configuration.php (dostęp: 2026-03-01)
  • PHP Manual: ini directives (php.ini) – zasady konfiguracji i miejsca ustawiania dyrektyw: https://www.php.net/manual/en/configuration.file.php (dostęp: 2026-03-01)
  • PHP Manual: error_log() – funkcja i powiązanie z konfiguracją error_log: https://www.php.net/manual/en/function.error-log.php (dostęp: 2026-03-01)

Materiały:

  • Dokumentacja PHP: sekcja Error Handling i dyrektywy konfiguracyjne
  • Materiały o konfiguracji środowiska PHP (php.ini, FPM, Apache/Nginx) używane w pracowni szkolnej
  • Ćwiczenia: celowe wywołanie warning/notice i sprawdzenie, gdzie trafia wpis w logach

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego