Nous avons un serveur CentOS 5.4 servant un certain nombre de nos sites Web. Le serveur est géré par Plesk 9.2.3. Nos sites sont développés en php.PHP ne sauvegarde pas les sessions sur le sous-domaine, ok sur le domaine
Nous avons notre domaine principal ourapplication.co.uk dans /var/www/vhosts/ourapplication.co.uk/httpdocs et notre sous-domaine api.ourapplication.co.uk dans/var/www/vhosts/ourapplication/subdomains/api/httpdocs
Les pages suivantes sont dans les deux endroits:
davidstest1.php
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<title>Code Blue Stats</title>
<link rel="stylesheet" type="text/css" href="css/style.css" />
</head>
<body>
<?php
echo "This is Davids Test 1. It will set SESSION['davids']='davids variable set' and then link
to davidstest2.php<br />
davidstest2 wil then do a session_start() call, and attempt to display SESSION['davids'] <br />";
$_SESSION['davids']='davids variable set';
?>
<a href="davidstest2.php">davidstest2.php</a>
</body>
</html>
davidstest2.php
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<title>Code Blue Stats</title>
<link rel="stylesheet" type="text/css" href="css/style.css" />
</head>
<body>
<?php
echo "This is Davids Test 2. It will do a session_start() call, and attempt to display SESSION['davids'] <br />";
$r=print_r($_SESSION, true);
echo "<pre>Session in <br />";
echo $r;
echo "<br /></pre>";
?>
<a href="davidstest2.php">davidstest2.php</a>
</body>
</html>
dans le domaine principal, davidstest2 retourne
This is Davids Test 2. It will do a session_start() call, and attempt to display SESSION['davids']
Session in
Array
(
[siteMode] => none
[davids] => davids variable set
)
davidstest2.php
dans le sous-domaine api, davidstest2 retourne
This is Davids Test 2. It will do a session_start() call, and attempt to display SESSION['davids']
Session in
Array
(
)
davidstest2.php
De toute évidence, quelque chose dans la configuration Apache ou la config Php est faux, comme la variable de session doit être stockée pour les deux domaines
Relevant phpinfo() reports:
Session Support enabled
Registered save handlers files user
Registered serializer handlers php php_binary wddx
session.auto_start Off Off
session.bug_compat_42 Off Off
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path//
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 1000 1000
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.hash_bits_per_character 5 5
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /var/lib/php/session /var/lib/php/session
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid 0 0
Des idées où commencer à chercher?
Je ne comprends pas encore entièrement. Vous attendez-vous à ce que le cookie de session soit transporté de domaine en sous-domaine? –
Non, non. api et l'application principale sont séparés. Juste que les cookies utilisés dans notre application sont bien, mais les cookies mis en api.ourapplication ne sont pas réglés. –
Ça pourrait être juste moi, mais il semble y avoir des discussions contradictoires entre ce dernier commentaire et votre conversation sous la réponse de Gumbo. Une grande partie de ce que dit Gumbo semble être d'obtenir api.domain.com et domain.com pour partager des données de session. Si vous dites que le problème est simplement que api.domain.com n'enregistre pas le cookie de session, alors c'est une question différente. –