當我們從beta測試服務器到我們活的服務器搬到我們的項目中,我們經歷了以下幾個:Session變量中的子目錄無法訪問
會話變量只訪問該文件訪問它們是在同一文件夾中的文件創造它們。我們的測試版服務器上並不是這種情況。所以,我創建了三個非常簡單的測試文件:
test.php的
<?php
session_id("581186accf44d7e80df40d0b5a47fb7d");
session_start();
$_SESSION['myvariable'] = 'Hello World';
?>
<html>
<body>
<p><a href="page2.php">Same folder test</a></p>
<p><a href="test/page2.php">Subfolder test</a></p>
</body>
</html>
然後,我們在同一個文件夾,並在測試/文件夾複製以下文件。
使page2.php
<?php
session_start();
print 'Here is page two, my session variable and my session cookie: ';
print $_SESSION['myvariable'];
print $_COOKIE['PHPSESSID'];
exit;
?>
和這裏的結果: 使page2.php
Here is page two, my session variable and my session cookie: Hello
World581186accf44d7e80df40d0b5a47fb7d
測試/使page2.php
Here is page two, my session variable and my session cookie: 581186accf44d7e80df40d0b5a47fb7d
正如你所看到的,會話變量已經消失。但會話ID Cookie保存在子目錄中,因此它不是cookie問題。
我看過phpinfo()中的會話塊;除了在beta服務器上設置session.save_path而不是在活動服務器上(這可能意味着它將默認爲/ tmp),配置在兩者上都是相同的。
而且,我們沒有這可能會改變domain.com路徑www.domain.com路徑的.htaccess文件。
由於本次測試的工作我們的測試服務器上,我的結論是,這是一個PHP的配置問題,但如果有人可以點我向需要改變的參數,這將是非常感謝!
是測試文件夾是在一個子域或類似的東西?如果是這樣,它不能閱讀會話cookie跨域,如果你在session_start之後移動session_id,那麼會發生什麼。 – mahen3d 2015-03-03 02:14:50
我測試了這個代碼,在子文件夾中我也得到了正確的輸出 這裏是第二頁,我的會話變量和會話cookie:Hello World581186accf44d7e80df40d0b5a47fb7d – mahen3d 2015-03-03 02:19:23
是的,正如我所說的,這也適用於我們的beta服務器,在現場服務器上。所以我的問題確實是:什麼PHP配置變量會阻止這些代碼的工作? – clayRay 2015-03-03 03:50:36