在jQuery AJAX POST期间无法访问环境变量

时间:2017-01-06 18:51:40

标签: laravel laravel-5.3

在我的.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

中存储此类信息是否有意义

编辑2

偶然发现discussion on Laracasts可能会对此有所了解。

0 个答案:

没有答案