/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Session-problem
Fra : Bertel Lund Hansen


Dato : 11-08-06 00:02

Hej alle

Hvad betyder det når filer der har kørt fint ved én udbyder,
resulterer i disse fejl hos en anden?

(jeg har ændret nogle stier og filnavne)

Warning: session_start(): Cannot send session cookie - headers
already sent by (output started at EN_FIL) in EN_ANDEN_FIL

Warning: session_start(): Cannot send session cache limiter -
headers already sent by (output started at EN_FIL) in
EN_ANDEN_FIL

Den pågældende linje er blot

   session_start();

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

 
 
Michael Rasmussen (11-08-2006)
Kommentar
Fra : Michael Rasmussen


Dato : 11-08-06 00:26

On Fri, 11 Aug 2006 01:02:25 +0200, Bertel Lund Hansen wrote:

> Hvad betyder det når filer der har kørt fint ved én udbyder,
> resulterer i disse fejl hos en anden?
>
Du har undersøgt for tomme udskriftslinjer?
Hvorledes er fejlhåndtering konfigureret hos de to udbydere?
Hvis du anvender linux, kan du med følgende kommando se, hvorvidt de
returnerede headere er forskellig hos de to udbydere:
lynx -dump -head http://www.domæne.tld/fil.php

--
Hilsen/Regards
Michael Rasmussen
http://keyserver.veridis.com:11371/pks/lookup?op=get&search=0xE3E80917


Peter Brodersen (11-08-2006)
Kommentar
Fra : Peter Brodersen


Dato : 11-08-06 00:27

On Fri, 11 Aug 2006 01:02:25 +0200, Bertel Lund Hansen
<nospamfilius@lundhansen.dk> wrote:

>Hvad betyder det når filer der har kørt fint ved én udbyder,
>resulterer i disse fejl hos en anden?
>
>(jeg har ændret nogle stier og filnavne)
>
>Warning: session_start(): Cannot send session cookie - headers
>already sent by (output started at EN_FIL) in EN_ANDEN_FIL

Et par gæt:

- Nye newlines
- UTF8-konvertering og -preamble

Lidt til selvhjælp:
- Hvor der står EN_FIL vil der typisk stå et linjenummer bagefter, fx:
"output started at /home/user/web/filename.php:4" - bemærk 4-tallet.
Det angiver linjenummeret, hvor outputtet er startet. Det er ret
væsentligt for at diagnosticere, hvor i EN_FIL, problemet opstår.
Eller rettere, oftere i linjen før.

Kan du skære koden ned til så lidt som muligt, hvor fejlen stadigvæk
optræder, og så evt. poste den her eller smide den online?

--
- Peter Brodersen
Ugens^WMånedens^WSommerens værktøj - Find vej: www.findvej.dk
Nu med valgfri tekst: www.findvej.dk/Nybrogade2,1203?text=Kulturministeriet

Bertel Lund Hansen (11-08-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 11-08-06 00:48

Peter Brodersen skrev:

>>Warning: session_start(): Cannot send session cookie - headers
>>already sent by (output started at EN_FIL) in EN_ANDEN_FIL

> Kan du skære koden ned til så lidt som muligt, hvor fejlen stadigvæk
> optræder, og så evt. poste den her eller smide den online?

Det kan blive ret omfattende.

Jeg har en index.php der styrer menu og indhold som inkluderes.

Den fil der fejler, er en indholdsfil. Den starter (som den
eneste) med session_start(), og det er den linje der fejler.

Når jeg kommenterer den ud, kører filen (i første omgang)
fejlfrit, men der er naturligvis en masse der ikke virker fordi
det er baseret på session-variable.

Kan det tænkes at der er spærret helt for sessioner?

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Peter Brodersen (11-08-2006)
Kommentar
Fra : Peter Brodersen


Dato : 11-08-06 01:11

On Fri, 11 Aug 2006 01:47:44 +0200, Bertel Lund Hansen
<nospamfilius@lundhansen.dk> wrote:

>Den fil der fejler, er en indholdsfil. Den starter (som den
>eneste) med session_start(), og det er den linje der fejler.
>
>Når jeg kommenterer den ud, kører filen (i første omgang)
>fejlfrit, men der er naturligvis en masse der ikke virker fordi
>det er baseret på session-variable.
>
>Kan det tænkes at der er spærret helt for sessioner?

Næppe. Men session_start() vil kun virke, hvis der ikke har været
noget som helst output før, idet den implicit sætter en cookie.

Som jeg forstår det, er det i EN_ANDEN_FIL at du kalder
session_start() (og her at problemet opstår). Den fortæller dig dog,
at du ikke kan afvikle funktionen session_start(), fordi der allerede
er spyttet noget output ud (og dermed også headers, hvilket gør det
for sent at sætte en cookie).

Outputtet startede i EN_FIL:x. Bemærk x - du har ret sikkert et
linjenummer noteret her, hvis PHP-versionen er bare nogenlunde ny.

Et eksempel på et lignende output:
Warning: Cannot modify header information - headers already sent by
(output started at /var/www/inc1.php:2) in /var/www/inc2.php on line
15

I inc2.php, linje 15, er vores session_start()-kode. Løsningen er nu
at kigge i inc1.php, linje 2, der genererer output (eller er en
PHP-start-tag).

Hvad står der i din EN_FIL på den nævnte linje?

--
- Peter Brodersen
Ugens^WMånedens^WSommerens værktøj - Find vej: www.findvej.dk
Nu med valgfri tekst: www.findvej.dk/Nybrogade2,1203?text=Kulturministeriet

Bertel Lund Hansen (11-08-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 11-08-06 07:02

Peter Brodersen skrev:

> Hvad står der i din EN_FIL på den nævnte linje?

Den pågældende linje er blot

   session_start();

Linjen står som sagt i den fil der genererer indholdet. Nu vil
jeg prøve at starte session i den 'yderste' fil som genererer den
første del af HTML'en.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Peter Brodersen (11-08-2006)
Kommentar
Fra : Peter Brodersen


Dato : 11-08-06 16:13

On Fri, 11 Aug 2006 08:01:41 +0200, Bertel Lund Hansen
<nospamfilius@lundhansen.dk> wrote:

>> Hvad står der i din EN_FIL på den nævnte linje?
>
>Den pågældende linje er blot
>
>    session_start();

Hm, er det ikke i EN_ANDEN_FIL, at den optræder?

Jeg vil tro, at når du afvikler session_start(), får du fejlen. Men
fejlbeskrivelsen henviser til to steder/filer:

1. Hvor output rent faktisk begyndte
2. Hvilken kommando, der ikke kunne afvikles, fordi der allerede havde
været output.

Jeg vil tro at session_start() omhandler nr. 2 her. Hvad står der i
linjerne for nr. 1?

--
- Peter Brodersen
Ugens^WMånedens^WSommerens værktøj - Find vej: www.findvej.dk
Nu med valgfri tekst: www.findvej.dk/Nybrogade2,1203?text=Kulturministeriet

Christoffer \(Guide\~ (16-08-2006)
Kommentar
Fra : Christoffer \(Guide\~


Dato : 16-08-06 10:11


"Bertel Lund Hansen" <nospamfilius@lundhansen.dk> skrev i en meddelelse
news:44dbc56b$0$3476$ba624c82@nntp02.dk.telia.net...
> Peter Brodersen skrev:
>
> >>Warning: session_start(): Cannot send session cookie - headers
> >>already sent by (output started at EN_FIL) in EN_ANDEN_FIL
>
> > Kan du skære koden ned til så lidt som muligt, hvor fejlen stadigvæk
> > optræder, og så evt. poste den her eller smide den online?
>
> Det kan blive ret omfattende.
>
> Jeg har en index.php der styrer menu og indhold som inkluderes.
>
> Den fil der fejler, er en indholdsfil. Den starter (som den
> eneste) med session_start(), og det er den linje der fejler.
>
> Når jeg kommenterer den ud, kører filen (i første omgang)
> fejlfrit, men der er naturligvis en masse der ikke virker fordi
> det er baseret på session-variable.
>
> Kan det tænkes at der er spærret helt for sessioner?
Har du forsøgt dig at lave session_start() på index siden



Bertel Lund Hansen (16-08-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 16-08-06 11:22

Christoffer (Guide) skrev:

>> Kan det tænkes at der er spærret helt for sessioner?

> Har du forsøgt dig at lave session_start() på index siden

Ja, og det får jeg fint lov til. Det får imidlertid ikke den side
til at fungere hvor jeg benytter session.

Jeg tjekkede phpinfo(), og sessions er aktiveret. Men jeg har
ikke fået gjort ret meget ved det, og der går lidt tid inden jeg
kan komme til bunds i det, men jeg vender tilbage til denne her
tråd når jeg ved mere.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Jesper Brunholm (11-08-2006)
Kommentar
Fra : Jesper Brunholm


Dato : 11-08-06 10:58

Bertel Lund Hansen skrev:
> Hvad betyder det når filer der har kørt fint ved én udbyder,
> resulterer i disse fejl hos en anden?

Umiddelbart lyder det ud fra ovenstående som en forskel på opsætningen.
Den letteste måde at sammenligne opsætning på er at lave en fil med
phpinfo() <http://dk.php.net/phpinfo> for hvert af de to hoteller.

> (jeg har ændret nogle stier og filnavne)

Det er foreslået, og det lidt basalt, men for en sikkerheds skyld: Du er
med på at der ikke må være noget som helst whitespace eller newline
outputtet før sessions åbnes?
************* fil begynder her ********
<?php
^^^ <- et whitespace er nok til at smadre det hele

Der må selvfølgelig heller ikke være echo'et noget...

Jeg ville lave en side som ikke laver andet end at teste sessions
funktionalitet og lægge den på først gammel server, og derefter ny server.

Hvis du ikke kommer videre kan vi nok bedst hjælpe ved enten at høre en
masse om konfigurationerne (selv om jeg ikke tror et er der den ligger)
eller se indholdet i EN_FIL (det kan midlertidigt uploades som txt fil
et sted, du må også godt sende filen til mig - mailadressen virker - men
der kan jeg rimeligt vis kun tale for mig selv )


mvh

Jesper Brunholm


Bertel Lund Hansen (11-08-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 11-08-06 11:35

Jesper Brunholm skrev:

> Umiddelbart lyder det ud fra ovenstående som en forskel på opsætningen.

Arbejdet ligger lidt stille fordi jeg pludselig ikke kan logge på
FTP-serveren hos den nye udbyder. Men jeg har skam ikke glemt
tråden, og jeg vender tilbage når jeg kan lave nogle tjek.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Bertel Lund Hansen (11-08-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 11-08-06 15:38

Bertel Lund Hansen skrev:

> tråden, og jeg vender tilbage når jeg kan lave nogle tjek.

Nu er der hul.

Hvis jeg i den primære styrefil skriver session_start(); som det
allerførste, kommer der ingen fejl, men søgesiden (Medlemmer på
Fidusos side) virker ikke.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Jesper Brunholm (11-08-2006)
Kommentar
Fra : Jesper Brunholm


Dato : 11-08-06 21:56

Bertel Lund Hansen skrev:
> Nu er der hul.
>
> Hvis jeg i den primære styrefil skriver session_start(); som det
> allerførste, kommer der ingen fejl, men søgesiden (Medlemmer på
> Fidusos side) virker ikke.

Så har du altså med 99,8% sikkerhed et output af en slags inden
session_start() køres.

mvh

Jesper Brunholm


Bertel Lund Hansen (29-08-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 29-08-06 20:44

Bertel Lund Hansen skrev:

> Hvad betyder det når filer der har kørt fint ved én udbyder,
> resulterer i disse fejl hos en anden?

Nu har jeg haft tid til at hitte ud af det. Der var to små
problemer der tilsammen virkede forvirrende:

1. session_start() skal ved den nye udbyder stå *aller*først.
2. register_globals er slået fra.

Jeg er hele tiden gået ud fra at register_globals var slået fra
og har omhyggeligt kodet f.eks.

   $mail=$_POST['mail']

.... bortset fra at der var et par stykker jeg havde glemt hvor
det så virkede hos den gamle udbyder fordi register_globals dér
er slået til.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste