【问题标题】:PHP CLI environment detectionPHP CLI 环境检测
【发布时间】:2016-03-31 03:47:42
【问题描述】:

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

导出 APPLICATION_ENV="staging"

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

【问题讨论】:

  • 在 CLI 中设置环境变量时,它只会影响该进程及其衍生的进程,不会影响系统的其余部分。

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


【解决方案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

【讨论】:

    【解决方案2】:

    对于您的问题的标题:

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

    说明:

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

    【讨论】:

      猜你喜欢
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      • 2015-01-01
      • 1970-01-01
      • 2020-01-23
      • 2011-07-28
      • 1970-01-01
      相关资源
      最近更新 更多