问题标签 [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 投票
4 回答
4745 浏览

laravel - Laravel 5 Dotenv for specific subdomain

I have a few subdomain in my laravel 5 application, each sub domain have a specific configuration, like mail, nocaptcha, etc.

how to set .env file to work with my-specific subdomain ?

0 投票
3 回答
29405 浏览

php - dotenv 在生产中需要 .env 文件

我正在使用 PHP 的 dotenv 来管理环境设置(不是 lavarel,但我标记了它,因为 lavarel 也使用 dotenv)

我已将 .env 从代码库中排除,并为所有其他协作者添加了 .env.example

在 dotenv 的 github 页面上:

phpdotenv 是为开发环境而设计的,一般不应该在生产环境中使用。在生产环境中,应该设置实际的环境变量,这样就不会在每个请求上加载 .env 文件的开销。这可以通过使用 Vagrant、chef 或 Puppet 等工具的自动化部署过程来实现,也可以使用 Pagodabox 和 Heroku 等云主机手动设置。

我不明白的是我得到以下异常:

PHP Fatal error: Uncaught exception 'InvalidArgumentException' with message 'Dotenv: Environment file .env not found or not readable.

这与文档所说的“应该设置实际的环境变量,以便没有在每个请求上加载 .env 文件的开销”相矛盾。

所以问题是 dotenv 是否有任何理由抛出该异常和/或我错过了什么?首先,与其他 dotenv 库(ruby)相比,行为是不同的

我可以轻松解决这个不太好的解决方案:

我认为最好的解决方案,但我认为 dotenv 应该处理这个问题。

0 投票
1 回答
8360 浏览

php - 在 Laravel 5.1 中使用 .env 设置存储路径

我想使用该.env文件在 Laravel 5.1 中配置存储路径。我的bootstrap/app.php样子是这样的:

.env 文件中的相关行是:

这行不通。我发现 Dotenv 库在处理引导程序后被.env初始化,因此变量在bootstrap.php.

是否有其他地方可以设置存储路径并且.env变量可用?

0 投票
1 回答
1585 浏览

amazon-web-services - 没有 .env 文件的命令行生产中的 Laravel 和环境变量

当我升级到 Laravel 5 时,我开始使用 env 系统,我在该文件的根目录中设置了所有配置。

.env

该文件不是我的存储库的一部分,当我部署时,我将相同的变量设置到我的系统环境变量中(在此处使用 amazon beanstalk),因此无需.env文件即可访问它们。

所以一切正常,但现在当我在生产中的脚本中使用命令行时,这些系统环境变量似乎无法在命令行中访问。然而,当 PHP 通过 Web 服务器提供服务时,它们是可访问的。

我发现如果我复制添加回这个 .env 文件,那么它可以在命令行中工作,但这就是我感到困惑的原因,我认为这个系统是为了防止将敏感信息提交到 repo,现在看来我必须这样做我可以在生产中使用我的 php artisan migrate 和其他命令。

我错过了什么吗?有没有办法在命令行中获取可用的系统环境变量,或者我是否必须以某种方式在生产中动态创建该 .env 文件?

0 投票
3 回答
6505 浏览

php - Laravel 5 - 按服务器名称检测环境

我了解 Laravel 5,它使用 .env 文件,因此我们可以设置特定的环境值。

我的问题是,在 Laravel 5 中有没有办法,例如,

并由此使用生产价值。我的想法是,我希望将所有环境及其变量放在一个文件或目录中,或者其他任何东西,这样我们就可以在没有任何手动干预的情况下部署整个构建,我们可以将这一切都检查到我们的代码存储库中。

0 投票
1 回答
804 浏览

php - 忽略单元测试中的 .env 文件

我的大部分课程都包括加载环境变量以进行配置。当我编码时,我认为vlucas/phpdotenv忽略了.env测试环境中的文件,因为已经有一个 conf 文件,就像phpunit.xml你定义它们的地方一样。

在测试环境中是否可以让 dotenv 忽略 .env?

0 投票
1 回答
812 浏览

laravel-5 - 如何在 travis-ci 中为 Lumen 应用程序读取环境变量

我有一个使用 vlucas 的 Dotenv 库的 Lumen 应用程序。尝试部署时,travis-ci 抱怨没有“.env”文件。我是否需要修改我的 bootstrap/app.php 文件以有条件地加载 Dotenv 类,还是有更好的方法来处理这个问题?

我收到的错误消息是:

PHP 致命错误:未捕获的异常 'InvalidArgumentException' 带有消息 'Dotenv: Environment file .env not found or not readable. 在 /home/travis/build/project/repo/vendor/vlucas/phpdotenv/src/Dotenv.php 中的 /home/travis/build/project/repo/bootstrap/../.env' 中使用您的环境设置创建文件: 33

0 投票
0 回答
255 浏览

laravel - .env 数据不能用 config() 函数读取,也不能用 \Config 外观

我有一个可以在多台服务器上完美运行的 Laravel 5 应用程序。但是在特定的服务器上,我的.env文件的值不能通过\Config外观或config()函数读取。

让我举一个APP_DEBUG环境条目的例子,所有其他条目也是如此。

我的 .env 文件(在所有服务器上都相同)包括以下行:

通过使用$app->environmentFile()我知道,我的.env文件被使用了。

当我通过 直接输出debug参数时env('APP_DEBUG'),我得到了正确的值( ),但是从配置( ,,)false中读取值的所有方法都只返回。\Config::get('app.debug')config('app.debug')app('config')->get('app.debug')NULL

我还尝试通过 清除缓存artisan cache:clear,因为我认为可能存在一些缓存问题,但这并没有改变任何事情。

我还尝试将 .env 文件的权限设置为 777。

当我通过 输出我的整个配置时\Config::all(),在我的其他服务器上正确设置的所有值都NULL在这个特定的服务器上。

有什么建议么?

编辑澄清:该项目在两个不同的虚拟主机上的同一服务器上设置了两次,一个用于服务 dev.domain.tld(用于开发),另一个用于服务 www.domain.tld(用于生产)。两个文件夹使用相同的网络服务器、相同的 PHP 版本和相同的用户

0 投票
10 回答
33174 浏览

php - 如何在 Laravel 5 中为 phpunit 指定不同的 .env 文件?

我有一个.env包含我的数据库连接详细信息的文件,这对于 Laravel 5 来说是正常的。我想覆盖这些以进行测试,我可以在phpunit.xml. 然而,这样做似乎违背了.env不提交环境配置的理念,尤其是密码。

是否有可能有类似的东西.env.testing并告诉phpunit.xml从中读取?

0 投票
2 回答
2000 浏览

php - 在 .env (dotenv) 文件中使用 PHP 函数

我正在尝试在 .env 文件中使用 PHP 函数,就rand()我而言。

这是我要在 .env 中实现的目标;

如您所见,我正在尝试生成从 1 到 5 的随机整数,它们代表 CDN 子域,以便在一个请求中我会得到http://cdn2.example.com另一个请求http://cdn4.example.com,依此类推。

我想在 .env 中使用 PHP 不是本机支持的,但有什么方法/解决方法吗?

PS我正在使用Laravel 5。