Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Cannot modify header information
Forum PHP.pl > Forum > Przedszkole
marrrecki
Witam.
Wiem, że nie raz było pisane o błędzie "Cannot modify header information", ale przeszukałem to forum pod kątem błędu i nie znalazłem nic sensownego.
Dokładny kod błędu:
  1. <?php
  2. Warning: Cannot modify header information - headers already sent by (output started at /home/(...)/pl.php:1) in /home/(...)/functions.php on line 4
  3. ?>


Błąd ewidentnie wskazuje na pierwszą linię pliku pl.php, przy czym w pierwszej linii tego pliku jest znak "<?php". Nidzie przed wywołaniem funkcji header() nie mam ani echo ani print ani niczego co mogłoby wysyłać jakiekolwiek informacje do przeglądarki.
qrees
Cytat(marrrecki @ 30.03.2008, 20:20:08 ) *
Witam.
Wiem, że nie raz było pisane o błędzie "Cannot modify header information", ale przeszukałem to forum pod kątem błędu i nie znalazłem nic sensownego.
Dokładny kod błędu:
  1. <?php
  2. Warning: Cannot modify header information - headers already sent by (output started at /home/(...)/pl.php:1) in /home/(...)/functions.php on line 4
  3. ?>


Błąd ewidentnie wskazuje na pierwszą linię pliku pl.php, przy czym w pierwszej linii tego pliku jest znak "<?php". Nidzie przed wywołaniem funkcji header() nie mam ani echo ani print ani niczego co mogłoby wysyłać jakiekolwiek informacje do przeglądarki.

Skoro nie masz ani echo, ani print, ani header ani nic podobnego, to co ten skrypt właściwie robi??
Sabistik
To pewnie masz jakiś BOM - o czym było na forum nie raz.


Przenoszę na przedszkole.
MaestroS
Może @ob_start();
Sabistik
Ludzie błagam, nie wpychajcie wszędzie buforowania zwłaszcza że nie do tego typu problemów jest stworzone. Nie uczmy obchodzić tak błędów, bo to nie jest rozwiązanie. Zwłaszcza na dziale przedszkole gdzie należy uczyć dobrych nawyków, bo potem wyrastają programiści z kwiatka. Zacznę chyba dawać warny za tego typu rozwiązania.
marrrecki
Sabistik: poczytałem, poprzerabiałem. Teraz na każdej stronie mam ten sam błąd w linii #1 tyle że odnosi się do głownego pliku index.php.

Cytat
Skoro nie masz ani echo, ani print, ani header ani nic podobnego, to co ten skrypt właściwie robi??

Napisałem "przed wywołanie funkcji header()" - czyli gdzies tam ona jest.

ob_start() nie ma tu nic do rzeczy i w żaden sposób nie pomaga.

Temat dalej aktualny
jarek_bolo
To może wklej zawartość pliku index.php, nie karz nam się domyślać.
Ewentualnie wrzuć go gdzieś do ściągnięcia.
Sabistik
Następny...
~krzywy36 wyjaśnij mi w czym pomaga twoja wypowiedź, odnosząc się do problemu poruszonego w temacie - inaczej dostaniesz warna i moderke na nowe posty.
marrrecki
  1. <?php  <--TO JEST LINIA #1 w pliku index.php
  2. error_reporting(E_ALL & ~E_NOTICE);
  3. //zapisany plik konfiguracyjny
  4. $settings = array();
  5. require('includes/configs.php');
  6.  
  7. //Ustaw sesję
  8. require('classes/session.php');
  9. $sess = new session;
  10. $sess->_SessionStart();
  11.  
  12. //ustaweinie konfiguracji
  13. require('classes/configure.php');
  14. $config = new configure;
  15.  
  16. //Połączenie z bazą danych
  17. require('classes/mysql.php');
  18. $mysql = new mysql;
  19. $mysql->connect($config->mysql_name(), $config->mysql_host(), $config->mysql_login(), $config->mysql_pass());
  20.  
  21. //funkcje globalne
  22. require('classes/functions.php');
  23. $globals = new functions;
  24.  
  25. //dołączenie języków
  26. require('languages/pl.php');
  27.  
  28. //pobranie ustawień z bazą danych
  29. $settings_query = $mysql->select('conf_key, conf_value', 'configs');
  30. while($settings_fetch = $mysql->fetch_array($settings_query)){
  31. $settings[$settings_fetch['conf_key']] = $settings_fetch['conf_value'];
  32. }
  33.  
  34. //linki
  35. require('classes/links.php');
  36. $link = new link;
  37.  
  38. //podłączenie plików akcyjnych
  39. if(!empty($_GET['module'])){
  40. require('modules/'.$settings[$_GET['module']].'/action.php');
  41. }
  42.  
  43. //załadowanie odpowiedniego modułu
  44. if(!isset($_GET['module']) || empty($_GET['module'])){
  45. $module = 'main';
  46. $file = 'index';
  47. } else {
  48. $module = $settings[$_GET['module']];
  49. }
  50. ?>


Dopiero niżej dołączane są pliki wyświetlające jakąkolwiek zawartość
Zapomniałem jeszcze wcześniej napisać odnośnie BOM - wszystkie pliki (oprócz css) mają kodowanie ustawione na utf-8. css'y są na UNIX
Crozin
Tak, ale można zapisać jako UTF8 z BOM lub UTF8 bez BOM winksmiley.jpg
Jeżeli wstawiłbyś stronę online moglibyśmy sprawdzić czy jest BOM

Cytat
css'y są na UNIX
Tutaj pewnie chodzi Ci o format zapisu nowej lini
Kod
windows - \r\n
unix - \n
mac os - \r
Ale to nie ma nic do rzeczy.
marrrecki
nie moge wstawić online niestety. Jak moge sprawdzić czy jest BOM?

Temat zamknięty. poradziłem sobie.
Dla potomnych rozwiązanie:
Faktycznie chodziło o BOM. Użyłęm notatnika, w którym mogłem sobie wybrać czy kodowanie plikó w utf-8 ma dołączać BOM czy nie (notepad++ ma taką opcję).
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.