2012-01-28 22 views
2

簡而言之,我已經有足夠的會話,所以本次會議的最佳服務器設置是什麼。會議背後的故事

讓我們說,我們已經2檔[a.php只會和b.php]

a.php只會代碼

<?php 
session_start(); 
$_SESSION['msg'] = "Hello world"; 
header("Location: b.php"); 
exit; 
?> 

b.php代碼

<?php 
session_start(); 
echo $_SESSION['msg']; 
unset($_SESSION['msg']); 
?> 

是的是的,它與很多人一起工作,但我想知道w HY它與我的作品在某個託管與以下PHP的信息,請查看

PHP INFO (WORKS) PHP Version 5.3.8 register_globals = On

Example Works

,而它不是對我有以下信息第二託管工作

PHP INFO (NOT WORKS) PHP Version 5.2.17 register_globals = On

Example Not Works and giving 0

爲什麼?什麼是錯的PHP服務器的設置,我真的很沮喪,因爲我的網站是完全依賴於這個會話作爲警報:(

謝謝你幫我

回答

1

會議在頭髮送,您正在使用重定向Location頭文件中,header()函數每次只能發送1個頭文件,我認爲在服務器發送會話頭文件給用戶之前,你需要重定向頭文件。發生了什麼,是的,它已被棄用,但可用於測試:

echo '<meta http-equiv="refresh" content="0;b.php">'; 

取代:

header("Location: b.php"); 

希望,對你的作品

1

會話存儲在文件中兩個服務器(session.save_handler =文件),但session.save_path的是不同的:/var/php_sessions服務器不工作和「空」爲服務器正在工作(/ tmp將被視爲默認值)。

/var/php_sessions是否存在並且可寫入您的Web服務器用戶(通常是apache,httpd或www-data)?您應該在/var/php_sessions中找到會話文件。將會話ID與Cookie提供的ID匹配。

1

錯誤的另一個來源可能是代理干擾。你的第二臺服務器正在運行Nginx/Varnish,它們都可以配置爲反向代理。

這也刺激我,第二個服務器對a.php的請求的答案以'0'開頭。我可以理解,b.php輸出'0',但爲什麼要a.php做到這一點?

見自己:

0<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">\n 
^ <-- this is strange, isn't it? 

你確定你已經上傳了正確的a.php只會?

另一方面,請檢查您的網絡服務器的錯誤日誌。