
我有一個運行 PHP 7.4.3 (Apache 2.4.41 + mod_php) 的 Ubuntu 20.04 伺服器,一切都應該是預設的 AFAIK。但 PHP 會話似乎不起作用。執行以下程式碼時,每次刷新網頁都會產生相同的輸出(而不是遞增),並產生一個新的會話檔案/var/lib/php/sessions
:
?php
session_start();
$_SESSION['test'] += 1;
var_dump($_SESSION['test']);
我用不同的瀏覽器(排除我的瀏覽器拒絕會話cookie的可能性)和作業系統檢查過,問題是一致的。我在舊的 CentOS 上使用 PHP 5.3 運行了相同的程式碼 - 沒有問題。每次瀏覽器刷新後,無論瀏覽器如何,計數器都會遞增,並且會話會根據每個請求進行更新,而不是重新建立。我不知道為什麼會出現這個問題。
/var/lib/php/sessions
Ubuntu機器上的權限是1733。
答案1
原來我是傻子。不久前,我在該伺服器上建立了一個 Apache VHost,並透過 刪除了該 VHost 的 cookie Header unset Set-Cookie
。不幸的是,這是預設的 VHost,我僅使用伺服器的 IP 位址進行了 PHP 會話測試(我還沒有網域)。我透過瀏覽器的開發工具發現 - PHPSESSID cookie 從未在 HTTP 回應標頭中發送,然後我記得我在預設 VHost 中的奇怪選擇。