标签: phpdotenv

Laravel 5 Dotenv 用于特定子域

我的 laravel 5 应用程序中有几个子域,每个子域都有特定的配置,如 mail、nocaptcha 等。

如何设置 .env 文件以与我的特定子域一起使用?

laravel laravel-5 phpdotenv

5
推荐指数
1
解决办法
5268
查看次数

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

我想使用该.env文件在Laravel 5.1中配置存储路径.我bootstrap/app.php看起来像这样:

<?php
$app = new \Illuminate\Foundation\Application(
    realpath(__DIR__.'/../')
);
$app->useStoragePath(getenv('STORAGE_PATH'));
Run Code Online (Sandbox Code Playgroud)

.env文件中的相关行是:

STORAGE_PATH=/var/www/storage
Run Code Online (Sandbox Code Playgroud)

这不起作用.我发现在处理引导程序初始化Dotenv库所以.env变量不可用bootstrap.php.

我可以设置存储路径并且.env变量可用吗?

php laravel laravel-5 phpdotenv

5
推荐指数
1
解决办法
5046
查看次数

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

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

.env

DB_HOST=x.x.x.x.x
DB_USERNAME
...
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

amazon-web-services amazon-elastic-beanstalk laravel-5 phpdotenv

5
推荐指数
1
解决办法
1815
查看次数

Dotenv必须是Dotenv \ Loader的实例

我在codeigniter项目上使用composer从vlucas安装了phpdotenv。

我也添加了钩子,如果v3.3需要,我会感到困惑

    $hook['pre_system'] = function() {
    $dotenv = new Dotenv\Dotenv(APPPATH);
    $dotenv->load();
};
Run Code Online (Sandbox Code Playgroud)

如果不添加此挂钩,则无法从.env文件中检索变量。如果我添加了它,则会出现此错误:

消息:传递给Dotenv \ Dotenv :: __ construct()的参数1必须是Dotenv \ Loader的实例,给定字符串,在第15行的C:\ xampp \ htdocs \ test \ application \ config \ hooks.php中调用

文件名:C:\ xampp \ htdocs \ test \ vendor \ vlucas \ phpdotenv \ src \ Dotenv.php

似乎正在加载该类,但它不喜欢参数“ APPPATH”,但是我发现的所有文档都使用了该类。

任何帮助表示赞赏

php codeigniter codeigniter-3 phpdotenv

5
推荐指数
2
解决办法
4078
查看次数

使用多个env文件

我想知道Laravel是否有办法指定要加载的一组env文件.我确切的问题是,我想补充一点像一个后缀为我所有.js.css资源.理想情况下,我有一个类似于发布日期的后缀,因为这些文件可以在同一版本中缓存,但我希望缓存在下一个版本中失效.但是我希望尽可能避免读取,修改和保存.env文件,而是希望创建一个新文件,例如.env.rdate通过脚本生成的文件,例如

echo APP_RELEASE_DATE=`date +%s` > env.rdate
Run Code Online (Sandbox Code Playgroud)

或类似的东西.这是完全可能的,还是我必须读取/更新/写入.env文件?

laravel-5 phpdotenv

3
推荐指数
1
解决办法
3497
查看次数

如何使用环境变量作为其他环境变量的引用?

我正在使用 Laravel 5.4 和vlucas/phpdotenv库。

我想将一个环境变量引用到其他环境变量,例如

APP_NAME: JUSTDOIT
SIGNUP_KEY: JUSTDOIT_SIGNUP
Run Code Online (Sandbox Code Playgroud)

在 SIGNUP_KEY 中,我想使用任何 APP_NAME。

laravel phpdotenv

3
推荐指数
1
解决办法
2390
查看次数

从 Laravel 中的 .env 返回数据类型

我想根据我的环境拥有动态播种机。(例如,在测试中我只想要种子 100 行,而本地则是 10'000)。

我在配置中创建了 seeder.php,它从 .env 文件调用值。

当我在我的播种机中使用配置时,它返回一个字符串,该字符串应该是一个整数。例如:

.env.local:

SEED_USER_COUNT=10000
Run Code Online (Sandbox Code Playgroud)

配置\播种机.php:

return [
    'user_count' => env('SEED_USER_COUNT', 10),
];
Run Code Online (Sandbox Code Playgroud)

用户播种机

factory(User::class, config('user_count'))->create();
Run Code Online (Sandbox Code Playgroud)

以上无法正常工作,似乎config('user_count')返回一个字符串"10000"而不是整数10000

php laravel dotenv phpdotenv

3
推荐指数
1
解决办法
873
查看次数

How to use phpdotenv library on my whole project?

I started a project using composer and donlowaded the package vlucas/phpdotenv. I would like to call the $_ENV['name'] for example in my whole project without needing to instantiate the dot env in every class like that:

$dotenv = Dotenv::createImmutable(__DIR__);
$dotenv->load();
Run Code Online (Sandbox Code Playgroud)

How can I achieve that like a laravel framework does for example?

Another question is I tough I needed to import my autoload require __DIR__.'/../vendor/autoload.php'; in order to call use Dotenv\Dotenv;...

我如何在类中使用 Dotenv 而不需要自动加载?

编辑添加index.php:

<?php

use Dotenv\Dotenv;

require …
Run Code Online (Sandbox Code Playgroud)

php frameworks autoload phpdotenv

3
推荐指数
1
解决办法
3734
查看次数

Symfony 4 控制台命令不读取环境变量

我有一个小的控制台命令,我想在其中读取一些环境变量,但它似乎没有从.env控制台中的文件或服务器配置中读取变量(php 文件有效)

代码

protected function execute(InputInterface $input, OutputInterface $output)
{
    $io = new SymfonyStyle($input, $output);
    $debug = $input->getArgument('debug') === 'y' ? true : false;
    $this->project = $input->getArgument('project');

    $start = new DateTime();

    $debug ? $io->text('<fg=green>Starting upload</>') : null;
    dump(getenv('APP_ENV'));
    dump(getenv('MAILER_USERNAME'));
    die;
    ...
}
Run Code Online (Sandbox Code Playgroud)

要测试的命令

php bin/console app:make-backup

输出:

Starting upload
false
false
Run Code Online (Sandbox Code Playgroud)

php bin/console app:make-backup --env=prod

输出:

Starting upload
"prod"
false
Run Code Online (Sandbox Code Playgroud)

php bin/console app:make-backup --env=dev

输出:

Starting upload
"dev"
false
Run Code Online (Sandbox Code Playgroud)

.env 文件

APP_ENV=dev
MAILER_USERNAME=info@xxx.com
Run Code Online (Sandbox Code Playgroud)

我不明白我哪里做错了?nginx 和 apache 服务器上存在问题,但getenv('MAILER_USERNAME') …

php symfony phpdotenv

2
推荐指数
1
解决办法
6949
查看次数

如何在PhpStorm中编辑.env文件?

我在PhpStorm终端中.env使用copy .env.example .env命令生成了新文件.然后创建了.env文件,但我无法在PhpStorm中编辑.当我双击它时,打开外部编辑器(Notepad ++).

不可变的文件类型

phpstorm laravel phpdotenv

0
推荐指数
1
解决办法
2442
查看次数

我可以使用 Maatwebsite 的 Laravel-Excel 将不同工作表的 startRow 设置为不同的值吗?

我正在使用Maatwebsite 的 Laravel-Excel导入包含两张表的 Excel 文件。该文件是由另一个系统生成的;我无法改变它的制作方式。

在第一张纸上,第一行是列标题。这很好用。

第一张工作表的第一行有标题

...但第二张纸有两行不需要的文本,然后是第三行的标题。

第二张表的标题位于第三行

我可以设置config(['excel.import.startRow' => 3])从第三行开始导入,但这意味着我错过了第一张表中的前两行有用数据。

    config(['excel.import.startRow' => 3]);
    $sheets = $import->all();
Run Code Online (Sandbox Code Playgroud)

有什么办法可以将excel.import.startRow第一张纸设置为 1,而将excel.import.startRow另一张纸设置为 3 吗?

laravel maatwebsite-excel phpdotenv

0
推荐指数
1
解决办法
4653
查看次数

如何使用 Doctrine Fixture 加载测试数据库进行 PHP 单元测试?

我正在尝试设置一个数据库环境来测试我的 Doctrine ORM 实体类,而不更改我的真实数据库。

我遵循了Symfony 的文档,但是当我运行时php bin/console doctrine:fixtures:load我收到警告:

小心,数据库“图表”将被清除。你想继续吗?(是/否)[否]:

尽管我已经在我的.env.test文件中设置了一个环境变量:

DATABASE_URL=mysql://testUser:testPassword@127.0.0.1/graph_test

编辑:这是整个.env.test文件:

# define your env variables for the test env here
KERNEL_CLASS='App\Kernel'
APP_SECRET='$ecretf0rt3st'
SYMFONY_DEPRECATIONS_HELPER=999999
PANTHER_APP_ENV=panther

# Database test
DATABASE_URL=mysql://testUser:testPassword@127.0.0.1/graph_test
Run Code Online (Sandbox Code Playgroud)

我尝试更改我的test/bootstrap.php文件,但收到相同的警告。

DATABASE_URL有没有办法告诉原则从文件中获取值.env.test?任何帮助将不胜感激。

PS 不需要多个测试 .env 文件。

php phpunit symfony doctrine-orm phpdotenv

0
推荐指数
1
解决办法
3070
查看次数

Slim Framework 中的设置文件 .env

我是瘦框架的新手。我会尝试在根文件夹项目中添加 .env 文件,然后我想访问 .env 文件中的值。我试过使用这个包https://github.com/vlucas/phpdotenv并在 index.php 中加载 .env。但是当我尝试获取 .env 文件中的值时,使用像 ex: getenv("DB_NAME") 它返回 false。不返回 DB_NAME 的字符串值。

.env

DB_HOST = localhost
DB_PORT = 3306
DB_NAME = DB
DB_USER = root
DB_PASSWORD = 
Run Code Online (Sandbox Code Playgroud)

索引.php

$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
Run Code Online (Sandbox Code Playgroud)

我使用纤薄的框架 ^4.*、Web 服务器 laravel 代客、数据库 MySQL。或者还有其他替代方法可以在超薄框架中配置 .env 吗?谢谢你。

php slim phpdotenv

0
推荐指数
1
解决办法
1881
查看次数