问题标签 [phpdotenv]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 在编译时使用环境变量配置服务
到目前为止,我一直在使用未版本化parameters.yml
文件中的容器参数来配置一些包。在容器编译期间读取的参数以确定需要在服务定义中注入哪些服务。
今天想把parameters.yml
配置替换成环境变量,但是由于是在运行时解析的,所以在构建容器时它们的值是不可用的,之后服务必须是公开的。
我在这里错过了什么吗?有没有一种干净的方式来配置服务?
[编辑]
我想根据是否启用某个功能来注入用户提供程序服务,并提供用户名。MyService
mock
php - 在使用 docker-compose 从 YML 构建服务器/网站的开发副本后,我遇到了与 dotenv 相关的致命 PHP 错误?
我从创建我们网站的机构那里获得了一个docker-compose.yml文件,以便在我接管管理我们的 Wordpress 电子商务之后构建我们现有网站的本地开发副本。
继续运行docker-compose up
,网站和数据库容器都在没有任何警告的情况下启动(除了 apache2 没有设置服务器名称),当我在浏览器中转到localhost时,我可以与服务器实例通信,但是我收到以下消息:
致命错误:未捕获的 TypeError:传递给 Dotenv\Dotenv::__construct() 的参数 1 必须是 Dotenv\Loader 的实例,给定字符串,在第 8 行的 /var/www/config/application.php 中调用并在 /var 中定义/vendor/vlucas/phpdotenv/src/Dotenv.php:31 堆栈跟踪:#0 /var/www/config/application.php(8):Dotenv\Dotenv->__construct('/var/www') #1 / var/www/public/wp-config.php(14): require_once('/var/www/config...') #2 /var/www/public/wp/wp-load.php(42): require_once ('/var/www/public...') #3 /var/www/public/wp/wp-blog-header.php(13): require_once('/var/www/public...') # 4 /var/www/public/index.php(5): require('/var/www/public...') #5 {main} 在 /var/vendor/vlucas/phpdotenv/src/Dotenv.php 中抛出在第 31 行```
确定这是 .env 文件本身的问题,我重新创建了它,因为它只包含很少的简单行(修改了此处共享的值,否则相同):
无论我把这个 .env 文件放在哪里,它似乎都会给我同样的致命错误。
考虑可能是我没有正确安装 dotenv,我回到基础并确保 Composer 拥有所需的一切。我的 composer.json 文件列出了以下必需的依赖项:
当我运行composer show -i
它显示它们都已安装。
预期结果:我应该在localhost上查看我们的 Wordpress 的本地副本,以便我可以开发并将更改推送到 docker hub。
实际结果:从 docker-compose.yml 构建时没有 CLI 错误,但是当我访问时,localhost
我收到上面显示的与 dotenv 相关的错误消息。
这真的让我很难过——如果有人能对这种情况有所了解,我将不胜感激!
php - 无法从 Symfony 服务访问 dotenv 变量
使用:
我无法从 Symfony 服务访问我的 .env 和 .env.local 文件中的值。我收到“通知:未定义索引”错误。
我看到应用程序正在从 config/bootstrap.php 加载 .env 和 .env.local
我还检查了以下文件,看是否与 dotenv 有任何关系,但一无所获
- 公共/index.php
- 网页/app_dev.php
- 网页/app.php
- 配置/包/framework.yaml
这是我尝试访问变量的方法:
这是我在日志中看到的:
更新(根据下面的 Ugo 评论):
如果我将以下内容添加到我的 config/services.yaml
并更新我的服务:
我收到以下错误:
因此,如果我按照错误提示进行操作:
我得到一个不同的错误:
此外,如果我运行 php bin/console,我确实会看到 Environment(.env) 部分下列出的变量。
好像我在兜圈子
php - 无法读取环境变量
我有一个简单的 Symfony 项目,使用"symfony/dotenv": "4.3.*",
并composer.json
尝试读取环境变量的值。
这是我的命令:
这是我的.env
文件
执行命令后,我得到以下信息
到目前为止一切都很好......但是现在如果我想使用环境变量来覆盖设置,它会返回一个错误。首先我设置环境变量
然后再次执行命令,结果如下
如果我使用删除环境变量unset MY_NEW_VAR
并再次执行命令,我会从.env
文件中获取值
我希望环境变量能够覆盖文件.env
注释中解释的设置.env
为什么它不适用于环境变量?我错过了什么吗?
php - Dotenv\Dotenv::__construct() 不是 Dotenv\Loader 的实例
我正在尝试构建一个 Linkedin API 代码,我发现一个奇怪的错误
我无法复制如何解决问题。
我已按照以下步骤操作
https://github.com/zoonman/linkedin-api-php-client 和 https://github.com/zoonman/linkedin-api-php-client/tree/master/examples
我已经通过 Composer 下载了供应商,这是我使用的代码
php - Symfony 4控制台命令不读取环境变量
我有一个小控制台命令,我想在其中读取一些环境变量,但它似乎没有从.env
文件中读取变量或控制台中的服务器配置(php 文件有效)
编码
要测试的命令
php bin/console app:make-backup
输出:
php bin/console app:make-backup --env=prod
输出:
php bin/console app:make-backup --env=dev
输出:
.env 文件
我看不出我在哪里做错了?nginx 和 apache 服务器上存在问题,但getenv('MAILER_USERNAME')
在任何 php 文件中使用都有效。
php - 找不到类“Dotenv\\Environment\\Adapter\\PutenvAdapter”
我在 WSL 上安装了 Ubuntu。上次我用它开发同一个网站时一切都很好。今天我像往常一样启动了 apache2 和 mysql,但网站无法正常工作。apache日志文件中的两行是:
预先感谢您的帮助!
php - 使用 Docker 和 PHP 从 env 文件加载环境变量
如何使用 Docker 文件中设置的 dotenv 变量,传递给 PHP 应用程序?
最近尝试使用带有一组键配对值的“.env”文件来跨不同的配置文件使用,但注意到 Docker + Wordpress 映像不容易设置。虽然在节点等中设置非常简单。
请参阅下面与 docker-compose.yml 位于相同目录的“.env”文件:
此处提供的官方 Wordpress 图像 ( https://hub.docker.com/_/wordpress ) 记录了“以下环境变量也适用于配置 WordPress [...] WORDPRESS_DB_USER、WORDPRESS_DB_PASSWORD 等”。
默认情况下,“wp-config.php”中的配置参数不会被 .env 变量替换,这导致我通过安装 composer 来扩展原始 Wordpress 图像。让我们将文件称为“DockerWordpress.yml”:
这在主 Docker-compose.yml 文件中使用,如下所示。找到服务“Wordpress”:
最后,从外部源挂载到容器卷中的“wp-config.php”文件,如您在前面的“docker-compose”文件中所见。这是通过遵循 defacto 插件提供的文档来完成的,以在 Php 社区中使用 dotEnv 变量 ( https://github.com/vlucas/phpdotenv )。
由于我使用的是作曲家和 phpdotnet 插件,我也尝试过:
在错误日志中,我可以阅读:
上面的错误code 4
是由提供“环境变量”引起的,导致入口点脚本尝试为我们修改 wp-config.php。
由于code 4
是由环境变量引起的,因此无论有无检查 docker 图像都会返回以下内容(没有环境变量):
请记住,我希望文档是正确的,并且上面的设置应该尊重环境变量。
php - 编辑 bootstrap.php 以自定义 Dotenv 行为
我对 Symfony Dotenv 的默认行为不满意,因为我想要一个 ie.env.override
来覆盖现有的环境值。
所以我想添加以下代码config/bootstrap.php
编辑此文件 ( config/bootstrap.php
) 是否有问题?未来的 Symfony 更新可以删除它吗?
php - PHPDoc 引用了一个 dotenv 条目
我应该如何在 PHPdoc 块上引用,如果变量不存在,它将检查它的 dotenv 设置?