Jul*_*oro 5 amazon-ec2 laravel
我正在尝试部署到我的应用程序,在本地运行良好.
事情是尝试:
dd(getenv('APP_ENV'));
Run Code Online (Sandbox Code Playgroud)
它返回"false"
但是当我连接ssh并输入:
php artisan env
Run Code Online (Sandbox Code Playgroud)
我明白了
production
Run Code Online (Sandbox Code Playgroud)
知道为什么它停止工作???
对于记录,在生产中,我的部署脚本执行3个命令:
composer dump-autoload -o
php artisan route:cache
php artisan config:cache
Run Code Online (Sandbox Code Playgroud)
我提到它是因为它可能是唯一不同的软件配置.
编辑:我发现有问题的命令是:
php artisan config:cache
Run Code Online (Sandbox Code Playgroud)
如果是的话:
php artisan config:clear
Run Code Online (Sandbox Code Playgroud)
问题解决了.
TX!
使用缓存配置时,.env
文件不再使用,因此getenv
无用,因为配置是从以下位置加载的:
bootstrap/cache/config.php
Run Code Online (Sandbox Code Playgroud)
相反,您可以从加载的应用程序配置中获取当前环境,如下所示:
bootstrap/cache/config.php
Run Code Online (Sandbox Code Playgroud)
或者直接使用app
辅助函数:
config('app.env');
Run Code Online (Sandbox Code Playgroud)
作为第三种选择,您始终可以使用该environment
方法获取当前环境:
app('env');
Run Code Online (Sandbox Code Playgroud)
Laravel使用dotenv库内部从.ENV文件加载配置项和它们添加到环境变量使用运行putenv,但是当你的缓存配置中装载部分不再做,因为Laravel检测到有一个存在缓存文件和而是使用它,因此这些密钥.env
不会加载到环境中,这无法通过getenv
.
由于.env
文件中的配置值仅在config
目录中的实际配置文件中使用时才会缓存,因此您需要创建一个配置选项,以便在使用缓存时缓存和访问它们。
因此,如果您想BASE_URL
在.env
文件中使用此值的键:
BASE_URL=http://domain.com/
Run Code Online (Sandbox Code Playgroud)
如果您希望能够在配置缓存时访问其值,则需要在配置文件中使用它。例如,您可以config/app.php
像这样将它添加到您的文件中:
app()->environment(); // or App::environment()
Run Code Online (Sandbox Code Playgroud)
然后您甚至可以在使用以下配置时访问:
BASE_URL=http://domain.com/
Run Code Online (Sandbox Code Playgroud)
你可以在Laravel 文档中阅读更多关于访问配置值的信息。
归档时间: |
|
查看次数: |
734 次 |
最近记录: |