问题标签 [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.

0 投票
0 回答
196 浏览

php - 在编译时使用环境变量配置服务

到目前为止,我一直在使用未版本化parameters.yml文件中的容器参数来配置一些包。在容器编译期间读取的参数以确定需要在服务定义中注入哪些服务。

今天想把parameters.yml配置替换成环境变量,但是由于是在运行时解析的,所以在构建容器时它们的值是不可用的,之后服务必须是公开的。

我在这里错过了什么吗?有没有一种干净的方式来配置服务?

[编辑]

我想根据是否启用某个功能来注入用户提供程序服务,并提供用户名。MyServicemock

0 投票
0 回答
96 浏览

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 相关的错误消息。

这真的让我很难过——如果有人能对这种情况有所了解,我将不胜感激!

0 投票
1 回答
943 浏览

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) 部分下列出的变量。

好像我在兜圈子

0 投票
1 回答
5797 浏览

php - 无法读取环境变量

我有一个简单的 Symfony 项目,使用"symfony/dotenv": "4.3.*",composer.json尝试读取环境变量的值。

这是我的命令:

这是我的.env文件

执行命令后,我得到以下信息

到目前为止一切都很好......但是现在如果我想使用环境变量来覆盖设置,它会返回一个错误。首先我设置环境变量

然后再次执行命令,结果如下

如果我使用删除环境变量unset MY_NEW_VAR并再次执行命令,我会从.env文件中获取值

我希望环境变量能够覆盖文件.env注释中解释的设置.env

为什么它不适用于环境变量?我错过了什么吗?

0 投票
2 回答
6167 浏览

php - Dotenv\Dotenv::__construct() 不是 Dotenv\Loader 的实例

我正在尝试构建一个 Linkedin API 代码,我发现一个奇怪的错误

我无法复制如何解决问题。

我已按照以下步骤操作

https://github.com/zoonman/linkedin-api-php-clienthttps://github.com/zoonman/linkedin-api-php-client/tree/master/examples

我已经通过 Composer 下载了供应商,这是我使用的代码

0 投票
1 回答
3685 浏览

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 文件中使用都有效。

0 投票
2 回答
1060 浏览

php - 找不到类“Dotenv\\Environment\\Adapter\\PutenvAdapter”

我在 WSL 上安装了 Ubuntu。上次我用它开发同一个网站时一切都很好。今天我像往常一样启动了 apache2 和 mysql,但网站无法正常工作。apache日志文件中的两行是:

预先感谢您的帮助!

0 投票
3 回答
11375 浏览

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 图像都会返回以下内容(没有环境变量):

请记住,我希望文档是正确的,并且上面的设置应该尊重环境变量。

0 投票
1 回答
216 浏览

php - 编辑 bootstrap.php 以自定义 Dotenv 行为

我对 Symfony Dotenv 的默认行为不满意,因为我想要一个 ie.env.override覆盖现有的环境值。

所以我想添加以下代码config/bootstrap.php

编辑此文件 ( config/bootstrap.php) 是否有问题?未来的 Symfony 更新可以删除它吗?

0 投票
2 回答
42 浏览

php - PHPDoc 引用了一个 dotenv 条目

我应该如何在 PHPdoc 块上引用,如果变量不存在,它将检查它的 dotenv 设置?