Ostrzeżenie po zmianie pliku index.php

Witam. Tak wygląda początek zawartości pliku index.php (od głównej strony):

<?php

/*

(obszerny komentarz dotyczący licencji GNU)


*/

session_start(); //start sesji 

ob_start();

require_once('connect.php');

if(@$first_run == 1) header("LOCATION: install.php");

require_once('functions.php');

$reklama_i=0;

?>

<?php echo $ustawienia['tytul']; ?>

<?php include('tpl/head.php') ?>

Nieopatrznie, w zasadzie nie wiem, dlaczego popełniłem taką gafę, zamieściłem kod “W3C DOCTYPE” między “*/” a "session_start(); //start sesji ". Wówczas wyświetlił się błąd:

Zauważyłem, że chodzi o wprowadzony wcześniej kod. Natychmiast go usunąłem, jednak komunikat pozostaje w dalszym ciągu na samej górze strony. W jaki sposób mogę go zlikwidować? Dodam, że obecnie plik index.php wygląda identycznie jak przed zmianami, więc wszystko powinno być w porządku.

Chyba jednak nie identycznie, skoro komunikat jest dalej. Nie zostawiłeś gdzieś na początku spacji albo pustej linii?

A może nadpisując zmieniłeś kodowanie pliku np na utf-8 z BOM ?

Komunikat mówi Ci że żadne dane nie mogą być wysłane do przeglądarki przed zmianą nagłówków protokołu HTTP (w tym start sesji). Dlatego pojawił się jak wcisnąłeś DOCTYPE przed start sesji. Daj go zaraz przed .

Jeśli po usunięciu wciąż masz ten problem, to tak jak kolega wyżej napisał, jakiś biały znak gdzieś został lub krzak po “BOM’ie”.

Na chwilę obecną, kod wygląda kropka w kropkę, spacja w spację identycznie jak przed modyfikacją. Odnośnie kodowania, cały czas widnieje:

Nie wiem, czy to ma znaczenie, jednak w index.php:

header("LOCATION: install.php");

install.php odnosi się do pliku, który nie istnieje, tzn. został usunięty po zainstalowaniu skryptu. Tak było od początku, jednak nie zauważyłem z tego powodu żadnych konfliktów.

Dodane 07.12.2011 (Śr) 17:30

Znalazłem kopię tego pliku sprzed tygodnia, podmieniłem go i problem nie występuje. Analizując te dwa pliki, nie było żadnej różnicy. Zupełnie jednakowa struktura kodu. Cóż, póki działa dobrze, nie będę w to ingerować.

A na przyszłość - w jaki sposób (najlepiej skryptowy) można usunąć BOM?

Chodzi o sposób zapisu pliku. Zapewne zmieniłeś jego format na UTF-8 z BOM. Te rzeczy ustala się przy zapisie pliku wiec chyba nie ma mowy o sposobie skryptowym.

Pobierz i zainstaluj sobie jakiś nowoczesny edytor tekstów (dla programistów), np. Notepad++, a nim jest możliwość ustawienia formatu pliku (kodowania -> UFT bez BOM) i zapisania go potem.

Dodane 07.12.2011 (Śr) 19:16

Oczywiście chodziło mi o “UTF-8 bez BOM”