テストの過程で、PHPの出力キャッシュに出力するecho等の関数があるメソッドの場合、httpリクエストヘッダーにsessionIDが配置されず、次のリクエストでsessionIDが取得できないことが判明しました。
問題の原因
コードの場所: public/index.php
$response->send();
このメソッドの代替メソッド コード:vendor/symfony/http-foundation/Response.php
/** * Sends HTTP headers. * * @return $this */ public function sendHeaders() { // headers have already been sent by the developer if (headers_sent()) { return $this; } // headers foreach ($this->headers->allPreserveCaseWithoutCookies() as $name => $values) { foreach ($values as $value) { header($name.': '.$value, false, $this->statusCode); } } // status header(sprintf('HTTP/%s %s %s', $this->version, $this->statusCode, $this->statusText), true, $this->statusCode); // cookies foreach ($this->headers->getCookies() as $cookie) { if ($cookie->isRaw()) { setrawcookie($cookie->getName(), $cookie->getValue(), $cookie->getExpiresTime(), $cookie->getPath(), $cookie->getDomain(), $cookie->isSecure(), $cookie->isHttpOnly()); } else { setcookie($cookie->getName(), $cookie->getValue(), $cookie->getExpiresTime(), $cookie->getPath(), $cookie->getDomain(), $cookie->isSecure(), $cookie->isHttpOnly()); } } return $this; }
前の理由headers_sent() に登場しました
興味のある学生は、出力キャッシュにデータがあるかどうかをテストできます (メソッドが echo などの関数を使用する場合、印刷動作があります)。headers_sent() 関数は true を返します
これは、セッションで発生する問題を説明していますメソッドに印刷機能がある場合は決して有効になりません。
以上がLaravel 5.4のセッション有効性の問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。