Help
Posted By Gregory

Ostrzeżenie PHP: Nie można modyfikować informacji nagłówka


English version: PHP Warning: Cannot modify header information


Ostrzeżenie PHP: Nie można modyfikować informacji w nagłówku – nagłówki zostały już wysłane …

Czasami ten komunikat może pojawić się w dzienniku błędów serwera lub na stronie internetowej. Jest to frustrujące i wygląda na to, że coś jest nie tak ze skryptem PHP, o którym mowa w komunikacie. W rzeczywistości komunikat ten wskazuje na problem (błąd) w innym skrypcie, wtyczce lub motywie. Możesz go zobaczyć, jeśli używasz wadliwej wtyczki i wyświetlanie błędów PHP jest włączone, co normalnie nie powinno mieć miejsca.

Ten komunikat pojawia się, gdy jakiś fragment kodu PHP na stronie internetowej generuje dane wyjściowe, które zazwyczaj są ostrzeżeniem PHP, które w ogóle nie powinno być wysyłane ani wyświetlane w przeglądarce użytkownika. Dane te są wysyłane przed wygenerowaniem nagłówka strony internetowej i wysłaniem go do przeglądarki użytkownika. Nagłówek strony internetowej może być pusty lub zawierać dodatkowe informacje, takie jak pliki cookie.

Bez względu na to, czy nagłówek jest pusty czy nie, musi zostać wysłany przed jakąkolwiek zawartością strony.

Jeśli wadliwa wtyczka WordPressa generuje ostrzeżenie PHP przed wysłaniem nagłówków do przeglądarki przez inne wtyczki, powoduje to błąd serwera i wyświetlenie komunikatu „Ostrzeżenie PHP: Nie można zmodyfikować informacji o nagłówku – nagłówki zostały już wysłane…” .

Taka wiadomość może wprowadzić w błąd, ponieważ nie wskazuje, jaki skrypt lub wtyczka spowodowała ten błąd. Gdy serwer WWW wykryje jakiekolwiek dane wyjściowe wygenerowane przez wtyczkę bez wysłanego nagłówka, automatycznie tworzy nagłówek i wysyła go do przeglądarek, dzięki czemu wszystkie inne wtyczki, które nie oczekują takiego zachowania, nie mogą wysłać swoich nagłówków, jeśli zajdzie taka potrzeba.

Jak rozwiązać ten problem w kontekście korzystania z WP Cerber Security

  1. Wyłącz wyświetlanie błędów w ustawieniach PHP w panelu sterowania hostingiem. Jeśli nie masz dostępu do ustawień PHP, poproś o pomoc swojego dostawcę hostingu.
  2. Wyłącz wyświetlanie błędów PHP w ustawieniach WP Cerber na stronie administracyjnej Hardening.
  3. W Ustawieniach głównych WP Cerber ustaw opcję „Wczytaj silnik zabezpieczeń” na „Tryb standardowy” lub „Tryb zaawansowany”.
  4. Sprawdź, czy stała WP_DEBUG jest zdefiniowana w pliku wp-config.php. Zakomentuj wiersz podwójnymi ukośnikami // lub po prostu usuń cały wiersz. Powinno to wyglądać tak:
    // define( 'WP_DEBUG', true );
    // define( 'WP_DEBUG', 1 );
  5. Dodaj następujące wiersze na początku pliku wp-config.php:
    @ini_set( 'display_errors', 0 );
    @ini_set( 'log_errors', 1 );

Czy przyczyną problemu może być WP Cerber lub WordPress?

Nie. Jedynym kodem, który może powodować ten problem, jest przestarzała/błędna wtyczka lub aktywny motyw. Jak znaleźć przyczynę? Sprawdź dziennik błędów serwera. I pozbądź się przestarzałych wtyczek.


I'm a team lead in Cerber Tech. I'm a software & database architect, WordPress - PHP - SQL - JavaScript developer. I started coding in 1993 on IBM System/370 (yeah, that was amazing days) and today software engineering at Cerber Tech is how I make my living. I've taught to have high standards for myself as well as using them in developing software solutions.

View Comments
There are currently no comments.