Gå til innhold

Anbefalte innlegg

Har sett litt på tidligere sessions-problemer her men vet ikke hva jeg skal gjøre.

 

Her er koden i sin helhet:

 

session_start();
session_register("min_variabel");
$min_variabel = "Hello world";
echo "The content of \$min_variabel is $min_variabel";

 

som gir en haug med meldinger:

 

Warning: session_start(): open(/tmp\sess_db8e69816ee3a4053dc6c4554d1475ff, O_RDWR) failed: No such file or directory (2) in m:\webting\test\regred\session.php on line 3

 

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at m:\webting\test\regred\session.php:3) in m:\webting\test\regred\session.php on line 3

 

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at m:\webting\test\regred\session.php:3) in m:\webting\test\regred\session.php on line 3

 

The content of $myvar is Hello world

Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

 

Warning: Unknown(): open(/tmp\sess_db8e69816ee3a4053dc6c4554d1475ff, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

 

Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0

Endret av OyvindN
Lenke til kommentar
Videoannonse
Annonse

Det virker som alle de feilmeldingene skyldes at du ikke har gjort rett instillinger i php.ini. Der har du en instilling som heter session.save_path, sett den til der du vil lagre sessionen, f.eks. c:\tmp

Så oppretter du en mappe med den plasseringen - så burde det fungere!

Lenke til kommentar

Jeg hadde samme problemet med cookies og da var det kun å opprette mappen så gikk det bra!

 

Men når skal man bruke sessions og ikke cookies? Er det generelle råd annet enn ikke bruk cookies dersom det har noe å si om bruker kan endre innholdet?

 

MVh

GruZuk

Lenke til kommentar

Post den nye feilmeldingen...

Hvis du har endret instillingene i php.ini og restartet serveren så skal feilmeldingen nå ha forandret seg litt.

 

I utgangspunkter ser det ut som problemet det er denne instillingen som er feil, siden feilmeldingen sier at den finner ikke filen i den mappen.

Lenke til kommentar

Ser ut som at du ikke har satt den midlertidige katalogen riktig

open(/tmp\sess_db8e69816ee3a4053dc6c4554d1475ff, O_RDWR)

I windows så er det ikke noe som heter /tmp. Bytt ut det med en annen katalog (mkdir m:\tmp og sett php til å bruke den katalogen i php.ini)

 

tror det skal fikse det.

Lenke til kommentar

Har endret litt på koden, har php versjon 4.3.3

<?
session_start();
$_SESSION['min_variabel'] = "Hello World";
echo "The content of \$min_variabel is $min_variabel";
?>

 

Jeg har prøvd på ulike path'er i php.ini:

 

session.save_path = /tmp

session.save_path =

session.save_path = /tmph3iuf3hih

 

Samma hva jeg skriver og restarter serveren får jeg disse feilmeldingene:

 

 

Warning: session_start(): open(/tmp\sess_bb93b36e3ff113bfd677c2787983fe8c, O_RDWR) failed: No such file or directory (2) in m:\webting\test\regred\session.php on line 3

 

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at m:\webting\test\regred\session.php:3) in m:\webting\test\regred\session.php on line 3

 

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at m:\webting\test\regred\session.php:3) in m:\webting\test\regred\session.php on line 3

The content of $min_variabel is

Warning: Unknown(): open(/tmp\sess_bb93b36e3ff113bfd677c2787983fe8c, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

 

Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0

Lenke til kommentar
vet ikke om du skjønte hva de andre mente - men du kommer like langt så lenge du angir en path som ikke finnes. /tmp finnes ikke på windowsmaskiner

Skulle tro at den ikke finnes, men den gjør det.

Hvis du bruker /tmp og serveren og php er installert på c: så er /tmp = c:/tmp

 

Hvilket os bruker du?

Bruker du windows så kan du bruke hele addressen, f.eks. c:/paht/to/server/tmp

Hvis du bruker session.save_path = /tmp så er det det samme som c:/tmp - så da må du lage den mappen!

Lenke til kommentar

Jeg bruker Windows XP.

Har laget tmp-mapper omtrent overalt nå, men får fremdeles de samme meldingene.

 

Prøvde meg på:

session_save_path('c:/tmp');
session_start();
$_SESSION['min_variabel'] = "Hello World";
echo "The content of \$min_variabel is $min_variabel";

 

Output her blir:

The content of $min_variabel is

 

Jeg ser at det først nå registreres en session-fil i tmp-mappen, men $min_variabel vises altså ikke. Ingen feilmeldinger forøvrig..

 

Ved:

session_start();
$_SESSION['min_variabel'] = "Hello World";
echo "The content of \$min_variabel is $min_variabel";

 

vises fremdeles de samme meldingene som nevnt i forrige innlegg.

Lenke til kommentar

Hvis du fortsatt får samme feilmelding:

 

Warning: session_start(): open(/tmp\sess_db8e69816ee3a4053dc6c4554d1475ff, O_RDWR) failed: No such file or directory (2) in m:\webting\test\regred\session.php on line 3

 

så tyder det på at du enten ikke har fått installert php sikkelig, eller at du redigerer feil php.ini (hvis du har kopiert den til flere steder?)

 

Lag denne filen, og kjør den i browseren:

<?php
phpinfo();
?>

 

Da får du opp en liste med dine PHP instillinger.

I første tabellen finner du

Configuration File (php.ini) Path
der kan du se hvor php.ini filen din er.

 

Stemmer det går du lengre ned til avsnittet om sessions:

session.save_path
Sjekk at den stemmer med det du har valgt.

 

Grunnen til at jeg tror du har en feil med installasjonen (eller editerer feil php.ini) er for hvis du endrer /tmp til c:/web/temp så burde det stå det i feilmeldingen og ikke :

open

(/tmp\sess_db8e69816

Lenke til kommentar

Takker! :)

 

Ja, jeg rota faktisk i feil php.ini-fil.

session_start();
$_SESSION['min_variabel'] = "Hello World";
echo "The content of \$min_variabel is $min_variabel";

 

Nå blir output dette:

The content of $min_variabel is

 

Alle feilmeldinger er borte, men $min_variabel vises ikke..

Lenke til kommentar

register_globals er skrudd av som default i nyere PHP, det anbefales også at du bruker $_SESSION til å lagre og hente variabler i en session. F.eks:

session_start();
if(isset($_SESSION['min_var']))
{
 echo $_SESSION['min_var']; // Her henter du ut min_var
}
else
{
 $_SESSION['min_var'] = "en verdi"; // Her setter du min_var
}

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...