在我的.env
文件中,我有一个自定义条目SECRET_FILE_NAME=mysecretfile.txt
。在我的控制器的某个地方,我需要访问mysecretfile.txt
,然后按如下方式获取其路径:
base_path(env('SECRET_FILE_NAME'))
返回正确的路径:
"C:\laragon\www\myproject\mysecretfile.txt"
但是,在AJAX POST调用期间,结果是
"C:\laragon\www\myproject"
事实证明,env('SECRET_FILE_NAME')
在常规POST(通过Postman Chrome扩展程序测试)期间返回"mysecretfile.txt"
,但在AJAX POST期间返回null
。
怎么可能?两者都是POST到同一个URL,同一个控制器动作。这是一个缓存问题吗?我试过php artisan config:clear
但没有改变。
另外,您认为可以直接从.env
文件访问ENV变量吗?或者我应该将它们放在app/config/services.php
中并通过
config('services.filenames.mysecretfile')
谢谢!
在@shalvah的帮助下,我认为在config/services.php
中添加对环境变量的引用可以解决问题:
'secret_filenames' => [
'my_secret_file' => env('SECRET_FILE_NAME')
],
该条目仍保留在.env
文件中:SECRET_FILE_NAME=mysecretfile.txt
。但现在我可以按如下方式使用它:
config('services.secret_filenames.my_secret_file')
这解决了我的问题;但是我很好奇为什么直接调用env('SECRET_FILE_NAME')
导致null
值?这是缓存问题吗?此外,在services.php
?
偶然发现discussion on Laracasts可能会对此有所了解。