根据环境变量运行 Laravel 命令

Posted

技术标签:

【中文标题】根据环境变量运行 Laravel 命令【英文标题】:Run Laravel command dependent on environment variables 【发布时间】:2021-07-01 05:48:26 【问题描述】:

一般来说,当我想在本地查看路线时,我会使用

php artisan route:list

当我不处理使用在本地环境和服务器之间声明不同的环境变量的文件时,效果很好。现在我明白了

PHP 注意:未定义索引:第 12 行 ....php 中的 VARIABLE_NAME

注意:未定义索引:第 12 行 ....php 中的 VARIABLE_NAME

特别是在我使用的服务器中

if (!defined('VARIABLE_NAME'))  define('VARIABLE_NAME', $_SERVER['VARIABLE_NAME']); 

$variable = env('VARIABLE_NAME') ? env('VARIABLE_NAME') : VARIABLE_NAME;

基本上服务器和本地环境之间的区别将是以下部分(在本地我不使用它并且是冲突的地方,因为没有$_SERVER['VARIABLE_NAME'])

if (!defined('VARIABLE_NAME'))  define('VARIABLE_NAME', $_SERVER['VARIABLE_NAME']); 

也测试了其他变体,例如

if (!defined('VARIABLE_NAME') or !getenv('VARIABLE_NAME'))  define('VARIABLE_NAME', $_SERVER['VARIABLE_NAME']); 

我可以在本地更改代码并忽略该文件。然而,这是一个可以经常更改的文件,所以这并不理想。

根据目标(见路线列表),最方便的方法是什么?方便我的意思是不必在 shell 中声明变量 one 或不必为本地和服务器维护不同的文件。

【问题讨论】:

【参考方案1】:

基于this answer,运行前

php artisan route:list

我会跑

set -o allexport
source .env
set +o allexport

然后能够很好地看到路线

【讨论】:

以上是关于根据环境变量运行 Laravel 命令的主要内容,如果未能解决你的问题,请参考以下文章

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

Laravel 使用 env 读取环境变量为 null 的问题

linux双击运行找不到环境变量

Laravel 环境变量(没有在方法中传递默认值)在 Artisan 命令文件中不起作用

Laravel 5.2 基于用户的动态环境变量

如何让 Laravel 4 环境变量工作?