Avatar billede mr-buchwald Nybegynder
11. maj 2009 - 17:28 Der er 12 kommentarer og
1 løsning

Forkert indstilling i php-configuration på webhotellet?

Hej!

Jeg er stødt en i det problem, at jeg får disse fejlmeddelser på min hjemmeside:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /data/head/info.php:7) in /pages/tilmelding.php on line 334

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /data/head/info.php:7) in /pages/tilmelding.php on line 334

Warning: Cannot modify header information - headers already sent by (output started at /data/head/info.php:7) in /pages/tilmelding.php on line 353


Umiddelbart kan jeg ikke gennemskue fejlen.
Det mærkelige er bare, at når jeg bruger hjemmesiden på min egen computer med EasyPHP som server, virker siden fuldstændig optimalt uden nogen form for fejl. Det er altså kun på mit webhotels server, at fejlen opstår.

Mit bud på en fejl er; at EasyPHP er konfigureret anderledes til at afvikle php end mit webhotels server.

Hvordan kan jeg løse dette?
Avatar billede erikjacobsen Ekspert
11. maj 2009 - 17:32 #1
Dit bud er korrekt. Men du må nok til at kode dine sider om: du må ikke skrive noget ud, HTML, mellemrum, osv, før du sender header-information til browseren - herunder cookies.
Avatar billede mr-buchwald Nybegynder
11. maj 2009 - 17:44 #2
Er det muligt at ændre konfigurationen i php på mit webhotel, således, at det vil komme til at virke alligevel?

- I så fald, hvad er det, som skal ændres?
Avatar billede erikjacobsen Ekspert
11. maj 2009 - 18:09 #3
Det afhænger af dit webhotel - men du kan altid lave din kode "rigtig".
Avatar billede mr-buchwald Nybegynder
11. maj 2009 - 18:17 #4
Det er selvfølgelig altid det bedste.

Hvad er et godt alternativ til:
header ("Location: en-eller-anden-fil.php");
...hvis det ikke er muligt at flytte header'eren foran noget  information overhovedet sendes til browseren?

Og hvis nu skulle være fræk, og lade koden være "ulovlig" i forhold til retningslinjerne for php - Hvad er det i konfigurationen for php, som skal ændres?
Avatar billede erikjacobsen Ekspert
11. maj 2009 - 18:40 #5
Noget med output_buffering

Men du skal sådan bare strukturere dine sider, så der ikke skrives noget ud, førend du har overstået det med cookies og redirect (og i det sidste tilfælde er der jo alligevel slet ikke noget, der skal skrives ud).
Avatar billede nemlig Professor
11. maj 2009 - 18:43 #6
Det er vel altid muligt at flytte headeren foran, så den sendes først.
Hvis din struktur vanskeliggør dette, kan du vælge at smide alt dit output i en variabel, og til sidst sende indholdet af variablen afsted:

$output  = 'bla bla bla'."\n";
$output .= 'bla bla bla'."\n";
header ("Location: en-eller-anden-fil.php");
$output .= 'bla bla bla'."\n";
echo $output;

Så kan du styre, at header altid kommer først.
Avatar billede nemlig Professor
11. maj 2009 - 19:54 #7
hov - havde ikke set at erikjacobsen havde skrevet noget lignende..... :)
Avatar billede erikjacobsen Ekspert
11. maj 2009 - 20:00 #8
Skal vi ud i unødvendige hacks, kan vi også nævne: http://php.net/ob_start
Avatar billede Slettet bruger
11. maj 2009 - 21:03 #9
Hvis du skal redirecte efter at der er sendt noget kan du enten bruge

<meta http-equiv="refresh" content="0;url=http://minside.dk/" />

i head'et, eller

<script type="text/javascript">
<!--
window.location = "http://minside.dk/"
//-->
</script>

i body'en. Javascript-udgaven virker desværre ikke i browsere uden javascript, eller hvis brugeren har slået det fra. Men det siger jo sig selv.
Avatar billede mr-buchwald Nybegynder
12. maj 2009 - 22:16 #10
TUSIND TAK for alle jeres gode bud!

- Så har jeg lidt at vælge imellem ;)

Læg et svar hver i sær, så fordeler jeg gerne de lovede points :)
Avatar billede erikjacobsen Ekspert
12. maj 2009 - 22:24 #11
Ingen point til mig, tak.
Avatar billede nemlig Professor
12. maj 2009 - 22:36 #12
Jeg hopper også over.
Avatar billede Slettet bruger
14. maj 2009 - 13:51 #13
Points, til mig?
Hvorfor ikk'?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester