Cannot modify header information - headers already sent by (output started at /www/module.php
Började få detta felmeddelande efter jag uppgraderade PHP och undrar om det är nån som vet om detta är nått som har blivit hårdare i dom nya PHP versionerna?
Tidigare hade jag 4.3.0 och nu har jag 4.4.0 och innan så flöt det riktigt bra och jag fick inga fel men sen uppgraderingen så inser jag att varenda php script jag gjort måste kodas om :/
GislavedMedlem sedan nov. 20041 740 inlägg Du har skickat något till webbläsaren innan du skickar headern. Därför får du felmeddelandet.
Sätt
ob_start();
högst(!) upp i koden och
ob_end_flush();
längst ned så kanske det fungerar. Då skickas inget output förrän du kommer till ob_end_flush() och header() borde fungera.
ok det där funkade ju super men får man fråga vad gör det där egentligen?
ob är en förkortning för outputbuffer.
ob_start ser till att innehållet som skriptet genererar inte skickas till klienten innan en funktion som ob_end_flush() körs. Det finns fler funktioner för outputbuffering.
Och grejen med headers är att det måste skickas innan andra saker skickas ... typ ;)
The_HulkMedlem sedan juni 20031 837 inlägg detta fungerar väl endast då man inte kör i felsäkert läge med PHP?
kan var abra tt tänka på för många webbhotell kör i felsäkert läge.
MatteMedlem sedan aug. 20002 975 inlägg Jag har svårt att se hur ob-funktionerna skulle vara beroende på safe_mode. safe_mode gäller framförallt arbete mot servern filsystem och konfiguration.
Själv ser jag användandet av ob-funktionerna för att undvika header-fel lite av nödlösning för dåligt strukturerade skript.
Fungerade allt innan övergången till 4.4 så beror header-felet sannolikt på att du får något felmeddelande som sätter en output.
Kanske det hela går att fixa om man tittar närmare på vad som händer i module.php där outputen startar.
require 'includes/db.php';
include 'includes/module.php';
include 'includes/head.php';
include 'includes/menu.php';
echo "<br>";
if(isset($_POST['additem'])){
additem();
}
if(isset($_POST['delitem'])){
delitem();
}
if(isset($_POST['change'])){
change();
}
if(isset($_POST['clear'])){
clear();
}
if(isset($_POST['ordersave'])){
ordersave();
}
if(isset($_POST['update_account'])){
update_account();
}
if(isset($_POST['update_faddress'])){
update_faddress();
}
if(isset($_POST['update_laddress'])){
update_laddress();
}
i detta fall måste jag använda mig av ob_start(); för att det ska fungera. Som ni ser så inkluderar jag module.php med alla mina funktioner som sen kan anropas och för att det ska fungera med tillsammans med header("Location: index.php?blablabla") så måste jag köra detta "fusk" för hur ska jag iså fall lägga upp det så jag slipper använda detta "fusk" ?
MatteMedlem sedan aug. 20002 975 inlägg Inte för att jag vet exakt vad du har i module.php, men det låter som ett antal funktioner för att spara m.m.
Vad har du då i module.php som ger output ?
Dina if-satser som inte kallar på funktioner som ger output, flytta upp dom till efter inkluderingen av module.php, för jag misstänker att head.php och menu.php ger output.
Visa sedan hur hela ditt header-felmeddelande ser ut.