2010-09-22 7 views
1

Dans ma machine locale et le serveur en ligne, j'ai un dossier 'test' et trois fichiers dans ce (one.php,two.php,three.php) .session ne fonctionne pas

one.php

<?php 
ob_start(); 
session_start(); 
$_SESSION['one'] = 1; 
header('Location:two.php'); 
exit(); 
?> 

two.php

<?php 
ob_start(); 
session_start(); 
$_SESSION['two'] = 2; 
header('Location:three.php'); 
exit(); 
?> 

three.php

<?php 
ob_start(); 
session_start(); 
echo '<pre>';print_r($_SESSION); 
?> 

alors que je prends one.php dans le navigateur i obtenir une sortie

// Machine locale

array[one] =1 
array[two] =2 

cela est correct

// serveur en ligne

array[one] =1 

ce n'est pas correct

Quel est le problème avec cela? je n'obtiens aucun avertissement,

Quelqu'un s'il vous plaît dites-moi, quel est le problème?

Répondre

3

J'ai trouvé la raison de ce problème.

Il était lié à la session.save_path de fichier php.ini.

Assurez-vous que le répertoire du chemin de sauvegarde de session est configuré dans php.ini, existe et est accessible en écriture.

1

essayez d'appeler session_write_close(); avant d'envoyer l'en-tête.

+0

Aucun changement, obtention du même résultat –

+0

hmmm ... essayez d'ajouter error_reporting (E_ALL); au sommet de vos scripts et voir si cela vous dit quelque chose. – Kris

+0

Aucun avertissement ne s'affiche, je pense que dans le réglage du serveur est comme ça –

2

Vous devez toujours ajouter * session_start(); * dans la première ligne de votre code. Il y a un problème dans PHP 5.2.11 qui a été corrigé avec la version 5.2.17.

Ce code ne fonctionne pas:

<?php 
    session_start(); 
?> 

Ce code fonctionne très bien:

<?php session_start();?> 

Donc, si vous vérifiez votre version hôte php et la version est 5.2.11 ou antérieure à celle-là, ça pourrait être le problème!