运行命令行脚本时设置 PHP 环境变量
2022-08-30 15:03:24
我需要从命令行运行PHP脚本,并且需要设置一些环境变量。不幸的是,以下内容不起作用:
php -dAPPLICATION_ENV=staging script.php
我想完成的是设置变量。APPLICATION_ENV
我需要从命令行运行PHP脚本,并且需要设置一些环境变量。不幸的是,以下内容不起作用:
php -dAPPLICATION_ENV=staging script.php
我想完成的是设置变量。APPLICATION_ENV
APPLICATION_ENV=staging php script.php
该变量将在 $_SERVER 数组中可用:
echo $_SERVER['APPLICATION_ENV'];
无法通过向 PHP 二进制文件传递选项来专门设置命令行中专门用于执行脚本的环境变量。
您有几种选择:
最后两个选项可能是执行此操作的最干净的方法,因为创建的变量仅在脚本运行时存在。
备选方案1的实施取决于系统。
选项2的实现也取决于系统 - 在Windows上你会做,在*nix上它会。set APPLICATION_ENV=staging&& php script.php
export APPLICATION_ENV='staging' && php script.php
如果您要选择选项3,您可能会想使用shell脚本,但这不是可移植的(您需要一个用于Windows的批处理文件和一个用于*nix环境的shell脚本。相反,我建议你写一个简单的PHP包装脚本,如下所示:
<?php
putenv('APPLICATION_ENV=staging');
include('script.php');
这允许您保持目标脚本不变,并仅为脚本的会话设置环境变量。
可以很容易地创建一个更复杂的包装脚本,它允许您在命令行上指定变量,甚至可以动态指定在设置这些变量时应执行的脚本。
可以使用以下变量实现选项 4:$argv
<?php
$applicationEnv = $argv[1];
// rest of you script
...并像这样调用脚本:
php script.php staging
但是,在我看来,您似乎在向脚本指示运行哪个环境(暂存,开发,实时等) - 在这种情况下,设置服务器范围的变量可能最简单,并根据需要重命名它以防止与其他应用程序可能设置的变量冲突。这样,您只需调用脚本,而不必担心这一点。这假设您过渡环境在与 live 计算机不同的计算机上运行(它应该是)。