错误 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】:
你应该use
ing 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 自定义配置文件获取会话变量?的主要内容,如果未能解决你的问题,请参考以下文章