错误 500:如何通过 Laravel 自定义配置文件获取会话变量?

Posted

技术标签:

【中文标题】错误 500:如何通过 Laravel 自定义配置文件获取会话变量?【英文标题】:Error 500: How to get session variable via Laravel custom config file? 【发布时间】:2016-08-31 14:46:37 【问题描述】:

我想使用自定义配置文件来访问会话变量 - 如果未设置,则使用回退。

但是一旦我添加了 Session::get()

,我就会得到一个 HTTP ERROR 500

[2016 年 5 月 5 日 19:53:16] php 已弃用:非静态 方法 Symfony\Component\HttpFoundation\Session\Session::has() 应该 不被静态调用 /Users/.../config/constants.php

怎么了?

<?php
// File: app/config/constants.php

use Symfony\Component\HttpFoundation\Session\Session;


$something = Session::has('something') ? Session::get('something') : "fallback";


return [
    'something ' => $something
];

更新 1:

use Session;

导致此错误:

致命错误:带有消息的未捕获异常“ReflectionException” '类日志不存在'在 /Users/…/vendor/laravel/framework/src/Illuminate/Container/Container.php:738 堆栈跟踪:#0 /Users/…/vendor/laravel/framework/src/Illuminate/Container/Container.php(738): ReflectionClass->__construct('log') #1 /Users/…/vendor/laravel/framework/src/Illuminate/Container/Container.php(633): Illuminate\Container\Container->build('log', Array) #2 /Users/…/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(697): Illuminate\Container\Container->make('log', Array) #3 /Users/…/vendor/laravel/framework/src/Illuminate/Container/Container.php(853): Illuminate\Foundation\Application->make('Psr\Log\LoggerI...') #4 /Users/…/vendor/laravel/framework/src/Illum 在 /Users/…/vendor/laravel/framework/src/Illuminate/Container/Container.php 在第 738 行

【问题讨论】:

你的日志怎么说? 尝试使用use Session; 导入Session 外观。 我已经添加了日志:Session::has() 不应该被静态调用 使用会话;导致另一个错误。请参阅更新 1。 【参考方案1】:

你应该useing Facade 来自Illuminate\Support 包。

use Illuminate\Support\Facades\Session;

那么你就可以正确使用Session::

【讨论】:

仍然收到此错误:[05-May-2016 19:59:58] PHP 致命错误:未捕获的 ReflectionException:/Users/.../vendor/laravel/framework 中不存在类日志/src/Illuminate/Container/Container.php:738 @f*** 这与 Session 无关。它说类 log 不存在。鉴于该问题与格式不正确的其他代码有关,并且我们已经解决了当前问题,请考虑投票并接受我的回答。 是和否。如果我删除 Session::has() 行,我不会得到错误。所以日志错误与会话有关?! 我刚刚检查了Illuminate\Support 库的整个源代码,没有引用任何log 类。 @f*** 检查您的.env 文件是否有任何不必要的空格或错误转义的字符串。【参考方案2】:

您无法在 laravel 的配置文件中访问会话,替代解决方案是将会话变量存储在 cookie 中,然后在配置文件中访问该 cookie。 使用 $_COOKIE php 数组来访问 cookie。

【讨论】:

以上是关于错误 500:如何通过 Laravel 自定义配置文件获取会话变量?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:如何根据路由响应自定义 404 错误

Laravel 5.3 个人访问令牌 500

如何解决有关自定义 500 和 503 错误页面的问题

Laravel 5.5 - 仅记录 500 错误,从不通过 api 发送错误详细信息?

Laravel之加密解密/日志/异常处理及自定义错误

如何在 Spring Boot 中发送 400、401、405、403 和 500 错误的自定义响应?