簡體   English   中英

PHP $ _SESSION無法通過頁面共享

[英]PHP $_SESSION not sharing through pages

我決定更新Synology服務器。 此更新包括最新的PHP版本。 在我能夠使用session_register()和session_is_registered()函數之前。 這些函數已棄用,因此我使用$ _SESSION []重構了代碼。 但是,問題是我無法閱讀另一頁上的會話。

第1頁

<?
session_start();

$_SESSION['page1'] = "page1session";

//Check if page2 is set on other page
if (isset($_SESSION['page2'])) {
   echo "Received the session from page 2";
} else {
   echo "No session info from other page";
}

//Dump all session info:
var_dump($_SESSION);

第2頁

<?
session_start();

$_SESSION['page2'] = "page2session";

//Check if page2 is set on other page
if (isset($_SESSION['page1'])) {
   echo "Received the session from page 1";
} else {
   echo "No session info from other page";
}

//Dump all session info:
var_dump($_SESSION);

因此,因此我想到,該會話無法(由於具有寫權限)被寫入php.ini中的session.save_path路徑。 當我運行php_info()時,該路徑被設置為/ var / services / tmp並被列為session.save_path; 因此,我認為此更新將此新路徑設置為新的會話路徑,並且該文件夾沒有全局讀/寫特權。 因此,我使用SSH登錄並運行以下代碼以遞歸方式設置權限

chmod -R 777 /var/services/tmp

設置權限后,我重新啟動了apache服務。

不幸的是,我仍然無法保存或打開另一個頁面上的會話。

第1頁上的var_dump會返回page1 => page1session,而在第2頁上沒有會話信息。頁面輸出到page2 => page2session。

伙計們怎么了?

謝謝,

亞歷克斯

  1. 清除會話目錄,打開第1頁,檢查是否已寫入會話文件。 如果還沒有,請仔細檢查您的保存路徑(也許是die(session_save_path());在腳本中要100%確保您獲得了正確的路徑)。 您也可以暫時將會話保存路徑設置為/ tmp,以幫助消除原因。

  2. 如果正在寫入會話文件,請檢查是否正在寫入會話cookie。 再次確認您腳本中的會話cookie名稱,以確保您的瀏覽器可以使用cookie查看器插件(firefox和chrome有很多這樣的插件)。 還值得轉儲$ _COOKIE變量,這樣您就可以知道Cookie是否正在通過(以防萬一,比如被限制在您域中的特定路徑下發生)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM