Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][PHP]Problem z przekierowaniem header location mimo output_buffering = 4096
Forum PHP.pl > Forum > Przedszkole
Elber
Witam,

mam dziwny problem, zapewne coś w konfiguracji php / apache po przeniesieniu na nowy hosting, bo na starym działało poprawnie, wersje PHP na nowym 5.3.38 na starym 5.3.39

Pominę fakt, że kod strony jest dość stary, nieobiektowy.

Jak utworzę sobię plik test.php

gdzie w najpierw wrzucam np. <h1>dasdsad</h1> i po tym <?php header('Location: /'); ?> to wszystko działa prawidłowo,

ale w kodzie strony, gdzie mam index.php, w którym za pomocą require_once() ładuje pliki z funkcjami php na podstawie aktuanego poziomu , oraz niżej konkretne pliki html'a do wyświetlenia treści juz taki header('Location: /') nie działa, wyrzuca błąd

Warning: Cannot modify header information - headers already sent by (output started at index.php:138) in includes/content/index.tpl.php on line 21

linia 138 w index.php to require_once() konkretnego .tpl.php bazując na $_GET a linia 21 w index.tpl.php to właśnie header('Location: /')

Przekierowania zaczynają działać jeśli do index.php na początku i końcu wrzucę odpowiednio ob_start(); i ob_flush();

Wie ktoś może co oprócz output_buffering powinno być jeszcze włączone aby to działało jak na starym serwerze ?
markuz
To nie wina wersji PHP tylko prawdopodobnie kodowania plików - "headers already sent" co oznacza, że przed header został wypisany tekst/białe znaki. Sprawdź czy kodowanie plików jest prawidłowe (np. UTF-8 bez BOM)
Elber
No właśnie przeleciałem wszystkie pliki i każdy UTF-8 bez bom ;/ pliki spakowałem w tar -czf i potem na nowym rozpakowałem tar -xzf i z tego co widzę wszystkie są prawidłowe

Jak mogę sprawdzić czy któryś z plików nie zawiera "białych znaków" ? jakaś linuxowa komenda czy cos ?

Był problem w kodzie z białymi znakami,

find ./ -name "*.php" -exec sed -i -e '/^\n*$/d' {} \;
find ./ -name "*.php" -exec sed -i -e 's/\s*$//' {} \;
find ./ -name "*.php" -exec sed -i -e 's/^\s*//' {} \;

rozwiązało problem, ale trochę namieszało w czytelności kodu wink.gif

Da się sprawdzić jakoś w którym konkretnie pliku były białe znaki ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.