PHP CLI环境检测


PHP CLI environment detection

我有一台Linux服务器,上面有很多不同的网站。当我对网站进行编程时,我会在本地开发它们,并将APPLICATION_ENV设置为开发。在我的服务器上,我有一个临时子域设置,我将APPLICATION_ENV设置为临时。最后,如果我最终托管了生产网站,我可以将APPLICATION_ENV设置为生产。所有这些都很好,但最近我一直在每次部署后运行CLI任务。我的命令行脚本显然无法对我通过Apache设置的APPLICATION_ENV变量执行任何操作。我知道你可以导出这样的变量:

export APPLICATION_ENV="暂存"

然而,这将是在我的整个服务器上设置它,而我真的只想在暂存子域上设置它。有没有办法将这些变量包含在我的服务器上的子域中?

对于问题的标题:

if (PHP_SAPI == 'cli') {
    echo 'This is CLI mode!' . PHP_EOL;
    var_dump($argv);
}

描述:

我认为您可以使用args设置APPLICATION_ENV值,或者将其(在源代码中)设置为内部CLIAPPENV模式。

在服务器范围内设置环境变量没有错,因为您只能为特定用户(甚至会话)设置环境变量。

无论如何,最简单的方法可能是将"env"作为参数传递,例如:cli.php --env=staging

看看他们是如何在Laravel中解决的:https://laravel.com/docs/4.2/artisan

指定配置环境

您可以指定应该使用的配置环境使用--env开关运行命令时:

php artisan migrate --env=local

Symfony:http://symfony.com/doc/current/cookbook/console/usage.html

$ php bin/console cache:clear --env=prod