Dette er en feilmelding som sannsynligvis dukker opp fordi du prøver å "modify(e) header information" etter at output (HTML) er sent til klienten (bruker som besøker sida di). Headere må sendes til klienten før outputen (alt av innhold, design og sånt). Headere er kort fortalt "inside-information" som klient-PC-en bruker til å tolke resten av innholdet. Det er for eksmpel hvilket charset du bruker og slike ting. Det at "<?php" skal stå øverst i koden er forsåvidt sant, men det trenger på ingen måte å løse problemet ditt. PHP har en rekke funksjoner for å sende headere, og om du bruker en slik funksjon etter at du har brukt en tilsvarende funksjon som sender output, så blir det krøll. Her er noen vanlige PHP-funksjoner som sender headere (eller på annen måte IKKE kan brukes etter at output er sendt):
- session_start()
- setcookie()
- header()
Og her er noen vanlig funksjoner som sender output (som altså kun skal brukes senere i skriptet enn de som står over her):
- echo()
- print()
- var_dump()
Sjekk den referansen du har i feilmeldingen; hva står det på linje 890? Hvis det er en av de tre header-funksjonene, så bør du på ett eller annet vis flytte dem lengre opp i skriptet. Feilmeldingen forteller deg også hvor første output-funksjon ble kjørt; "(
output started at ...". Hvis det ikke lar seg gjøre å flytte på disse funksjonene, så kan du kanskje angripe problemet omvendt; flytt output-funksjonene lengre ned enn header-funksjonene.
Dette med tegnkoding kan også være en faktor her - filer som er kodet i UTF-8 med BOM (byte order mark) er ubrukelige fordi BOM står foran <?php - og derfor starter alltid output før du rekker å bruker header-funksjonene. UTF-8 uten/without BOM funker fordi det, som navnet tilsier, ikke har dette byte order merket på starten av fila. Du kan ikke endre tegnkoding i den notepad-versjonen som følger med Windows, den er litt for primitiv. Sjekk heller ut Notepad++, om du ikke allerede har det.