PHP CLI环境检测

时间:2015-12-24 19:34:21

标签: php server environment-variables command-line-interface vhosts

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

导出APPLICATION_ENV =“staging”

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

2 个答案:

答案 0 :(得分:1)

您的问题标题:

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

有关说明:

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

答案 1 :(得分:1)

将服务器范围内的环境变量放在一起没有任何问题,因为您只能为特定用户(甚至会话)设置它们。

无论如何,最简单的方法可能是通过" 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