laravel使用env方法获取.env的配置,报错:getting null value when used with config:cache
背景:
SANCTUM_STATEFUL_DOMAINS是.env里的一个配置选项,在controller控制器里使用.env('SANCTUM_STATEFUL_DOMAINS')获取,一直都是正常的,突然就报了null
分析:
首先,确认了.env里SANCTUM_STATEFUL_DOMAINS的配置正常,且值不为null
有说是因为laravel的production模式导致env函数返回了null,要改成config函数,但是,这个env返回null,是在本地开发环境下,可以排除production的因素,实际上,改为config获取还是一样的null
解决:
导致env函数返回null的真正原因是:bootstrap/cache/config.php,这个文件会影响env函数的返回值,解决方法就是,把bootstrap/cache/config.php删掉,此时.env('SANCTUM_STATEFUL_DOMAINS')就可以正常读取.env文件里的内容了。
这个使用我们可以再次执行 php artisan config:cache ,这会在bootstrap/cache/下重建一份最新的config.php,这个时候,.env('SANCTUM_STATEFUL_DOMAINS')仍然能正常获取.env文件里的内容。
所以,导致env函数返回null的真正原因是,bootstrap/cache/config.php较旧导致的,只需要删掉,重建一份最新的即可。
参考资料:
https://bigboxcode.com/laravel-env-getting-null-value-when-used-with-configcache