Laravel Artisan - 重新加载 .env 变量或重启框架
Laravel Artisan - reload .env variables or restart framework
我正在尝试编写一个命令作为构建项目的快速入门。该命令要求输入数据库详细信息,然后更改 .env 文件。问题是命令之后需要做一些数据库查询,但是没有重新加载 .env 变量。
我的问题是,有没有办法重新加载或覆盖 .env 变量运行时。如果没有,有没有办法调用另一个 Artisan 命令 freshly,以便框架再次启动?
在我的命令中,我尝试在我的实际命令中执行 $this->call('build:project')
,但即使在第二次调用中,变量也没有重新加载。
有没有办法在不让用户手动调用多个命令的情况下实现这一点?
谢谢!
Laravel 使用从 .env
文件获取数据的配置文件。所以,你可以做的是在运行时override configuration values:
config(['database.default' => 'mysql']);
我在重新加载 .env 变量时遇到了同样的问题,我用这个允许你清除配置的命令行修复了它:
php artisan config:clear
希望对您有所帮助。问候。
尝试清除缓存它对我有帮助(无法通过 ssh 进入服务器)
生产服务器上有{app route}/bootstrap/cache/config.php文件吗?删除它。
这对我有帮助
作为 OP,我正在尝试 bootstrap 通过 运行ning 控制台命令构建一个 Laravel 项目,并在过程中询问数据库凭据。
这是一个棘手的问题,我阅读的任何内容都无法修复它:重置配置、缓存、Dotenv 重新加载等...似乎一旦控制台命令/操作初始化,初始数据库连接将全部保留一直到最后。
我找到的可行解决方案是在完成数据库修改后绕过此缓存状态,方法是使用本机 shell exec 命令并将 php artisan 命令作为参数传递:
passthru('php artisan migrate');
因此,顺序为:
- php artisan project:build(或者你的控制台命令)
- 提示用户输入数据库凭据
- 替换 .env 文件中的值(您的搜索和替换算法)
- 运行
php artisan config:cache
passthru('php artisan migrate');
ro 运行 你的迁移
shell_exec
会做同样的事情,但在静默模式下,而 passthru
会 return 控制台生成的输出。
https://www.php.net/manual/en/function.passthru.php
在 Laravel 8.52
上成功完成
我正在尝试编写一个命令作为构建项目的快速入门。该命令要求输入数据库详细信息,然后更改 .env 文件。问题是命令之后需要做一些数据库查询,但是没有重新加载 .env 变量。
我的问题是,有没有办法重新加载或覆盖 .env 变量运行时。如果没有,有没有办法调用另一个 Artisan 命令 freshly,以便框架再次启动?
在我的命令中,我尝试在我的实际命令中执行 $this->call('build:project')
,但即使在第二次调用中,变量也没有重新加载。
有没有办法在不让用户手动调用多个命令的情况下实现这一点?
谢谢!
Laravel 使用从 .env
文件获取数据的配置文件。所以,你可以做的是在运行时override configuration values:
config(['database.default' => 'mysql']);
我在重新加载 .env 变量时遇到了同样的问题,我用这个允许你清除配置的命令行修复了它:
php artisan config:clear
希望对您有所帮助。问候。
尝试清除缓存它对我有帮助(无法通过 ssh 进入服务器)
生产服务器上有{app route}/bootstrap/cache/config.php文件吗?删除它。
这对我有帮助
作为 OP,我正在尝试 bootstrap 通过 运行ning 控制台命令构建一个 Laravel 项目,并在过程中询问数据库凭据。
这是一个棘手的问题,我阅读的任何内容都无法修复它:重置配置、缓存、Dotenv 重新加载等...似乎一旦控制台命令/操作初始化,初始数据库连接将全部保留一直到最后。
我找到的可行解决方案是在完成数据库修改后绕过此缓存状态,方法是使用本机 shell exec 命令并将 php artisan 命令作为参数传递:
passthru('php artisan migrate');
因此,顺序为:
- php artisan project:build(或者你的控制台命令)
- 提示用户输入数据库凭据
- 替换 .env 文件中的值(您的搜索和替换算法)
- 运行
php artisan config:cache
passthru('php artisan migrate');
ro 运行 你的迁移
shell_exec
会做同样的事情,但在静默模式下,而 passthru
会 return 控制台生成的输出。
https://www.php.net/manual/en/function.passthru.php
在 Laravel 8.52
上成功完成