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 nagłówka – nagłówki zostały już wysłane…

Czasami możesz zobaczyć ten komunikat w dzienniku błędów serwera lub wyświetlić go 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 ten komunikat wskazuje na problem (błąd) w innym skrypcie, wtyczce lub motywie. Możesz otrzymać ten komunikat, jeśli używasz wadliwej wtyczki i włączone jest wyświetlanie błędów PHP , co normalnie nie powinno mieć miejsca.

Ten komunikat pojawia się, gdy jakiś fragment kodu PHP na stronie internetowej generuje dane wyjściowe, którymi zazwyczaj jest komunikat ostrzegawczy PHP, który w ogóle nie powinien być wysyłany i pokazywany w przeglądarce użytkownika. Dane wyjściowe 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 może zawierać dodatkowe informacje, takie jak pliki cookie.

Niezależnie od tego, czy nagłówek jest pusty, czy nie, należy go wysłać przed jakąkolwiek treścią strony.

Jeśli wadliwa wtyczka WordPress generuje ostrzeżenie PHP, zanim inne wtyczki wyślą nagłówki do przeglądarki, prowadzi to do błędu serwera z komunikatem „Ostrzeżenie PHP: Nie można modyfikować informacji w nagłówku – nagłówki zostały już wysłane…” .

Taka wiadomość może wprowadzić każdego w błąd, ponieważ nie informuje, jaki skrypt lub wtyczka spowodowała ten błąd. Kiedy serwer WWW wykryje dane wyjściowe generowane przez wtyczkę bez przesłanego nagłówka, automatycznie tworzy nagłówek i wysyła go do przeglądarek, więc wszystkie inne wtyczki, które nie oczekują takiego zachowania, nie będą mogły 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 hostingu. Jeśli nie masz dostępu do ustawień PHP, poproś o pomoc swojego dostawcę usług hostingowych.
  2. Wyłącz wyświetlanie błędów PHP w ustawieniach WP Cerber na stronie administratora Hardening.
  3. W Ustawieniach głównych WP Cerber ustaw „Załaduj silnik bezpieczeństwa” na „Tryb standardowy” lub „Tryb zaawansowany”.
  4. Sprawdź, czy w pliku wp-config.php zdefiniowano stałą WP_DEBUG . Skomentuj linię podwójnymi ukośnikami // lub po prostu usuń całą linię. Tak to powinno wyglądać:
    // 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.