docker - Docker 中的 Laravel 无法识别环境变量

标签 docker laravel-5 environment-variables amazon-elastic-beanstalk

我在使用 Docker 中的环境变量时遇到问题。

出于某种原因,Laravel 无法看到我在 Dockerfile 中设置的环境变量。像 APP_KEY、APP_ENV 等。但是当我通过 SSH 进入 docker 容器时:

docker exec -it [container_name] bash

并运行以下命令:

php artisan tinker
> print_r($_ENV)

环境变量存在并已设置为正确的值。但是,当我尝试在 Blade 模板中执行相同操作时,我根本看不到 APP_KEY、APP_ENV 变量。我已经编辑了 Docker 容器中的 php.ini 文件,以便它显示

variables_order = 'EGPCS'

.env 文件是将环境变量传递到 Laravel 的唯一方法吗?

感谢您的所有帮助。

干杯

最佳答案

我解决了!实际上我的一个 friend 给了我线索。

原来是 FPM 配置删除了 Elastic Beanstalk 设置的环境变量。

基于此文档:http://php.net/manual/en/install.fpm.configuration.php

clear_env boolean

FPM 工作人员的环境干净。在添加此池配置中指定的环境变量之前,通过清除工作进程中的环境,防止任意环境变量到达 FPM 工作进程。从 PHP 5.4.27、5.5.11 和 5.6.0 开始。默认值:是。

因此,在您的 php-fpm.conf 文件中查找该变量并将其设置如下:

clear_env = no

一切顺利!然后,您的 Laravel 应用程序可以使用 env()

提取 Elastic Beanstalk 中设置的环境变量

我希望这对某人有帮助。干杯!

关于docker - Docker 中的 Laravel 无法识别环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35904793/

相关文章:

PostgreSQL docker 容器不将数据写入磁盘

macos - Boot2Docker 搜索不存在的 docker-bootstrap.sock

docker - 运行 docker-compose up 后数据库权限被拒绝

Docker - 无法在卷内的容器之间共享数据(docker-compose 3)

python - 启动脚本以从 Python 导出环境变量

php - 如何在 Laravel 模型上设置属性的默认值

php - Laravel 与谷歌云数据存储

laravel - Laravel 中自定义函数的正确位置在哪里?

vue.js - 使用 Axios baseURL 选项时远程服务器上的空白页面

php - 在 Dockerfile 中使用环境变量