【问题标题】:Environment variables unset on server, using php deployer使用 php deployer 在服务器上未设置环境变量
【发布时间】:2020-09-18 06:10:36
【问题描述】:

在我的本地机器上,我使用 docker 为我的 php 提供服务,我使用以下行在我的 docker-compose.yml 文件中包含了 .env 文件,它工作正常,我可以使用getenv() 查看变量,问题是我无法让它们在我的在线服务器上工作。

Docker(本地工作)

app:
  env_file:
    - .env

部署器配置(不在服务器上工作)

我使用部署器将我的网站部署到我的主机(运行 nginx 和 php-fpm),使用以下部署器脚本

host('staging')
    ->hostname('app.host.be')
    ->port(22)
    ->stage('staging')
    ->set('deploy_path', '/var/www/')
    ->set('branch', 'master')
    ->identityFile('~/.ssh/id_rsa')
    ->user('admin')
    ->set('env', [
        'MY_ENV' => 'test'
    ]);

我也尝试将环境设置为主机定义之外

set('env', [
    'MY_ENV' => 'test'
]);

host('staging')
   ->hostname('app.host.be');

但运行 getenv() 只会在我的实时服务器上返回以下结果

array(2) { ["USER"]=> string(8) "www-data" ["HOME"]=> string(8) "/var/www" }

【问题讨论】:

    标签: php deployment environment-variables


    【解决方案1】:

    我会发表评论,但我还没有足够的声誉。

    请看这个问题https://github.com/deployphp/deployer/issues/1504

    PHP 中的环境变量有点不同,它们并不是真正的系统级变量,例如 docker 设置它的方式。

    因此,您使用部署程序设置的变量在运行期间可用于 PHP

    根据您的主机,您可能有足够的权限来修改 VM 上的环境变量,因此您应该研究一种修改这些环境变量的方法。最好通过持续部署管道。

    编辑:还请查看 PHP 中的 Dotenv 并查看基于此的推荐流程。

    【讨论】:

      猜你喜欢
      • 2012-11-26
      • 2012-10-05
      • 2016-05-16
      • 2014-09-02
      • 1970-01-01
      • 2018-09-03
      • 1970-01-01
      • 1970-01-01
      • 2017-10-09
      相关资源
      最近更新 更多