我想在我的docker容器中显示一个env var。 PHP脚本如下所示:
<html>
<head>
<title>Show Use of environment variables</title>
</head>
<body>
<?php
print "env is: ".$_ENV["USER"]."\n";
?>
</body>
</html>
我使用OpenShift启动容器。 PHP - 容器显示:
env is:
现在我更改了容器的dc配置:
oc env dc/envar USER=Pieter
deploymentconfig "envar" updated
当我访问容器时。 USER的env变量是Pieter
docker exec -it 44a0f446ae36 bash
bash-4.2$ echo $USER
Pieter
但我的剧本仍在显示:&#34; env is:
&#34;它没有填写变量。
答案 0 :(得分:1)
更改
print "env is: ".$_ENV["USER"]."\n";
到
print "env is: ".getenv("USER")."\n";
/# cat test.php
<html>
<head>
<title>Show Use of environment variables</title>
</head>
<body>
<?php
print "env via \$_ENV is: ".$_ENV["USER"]."\n";
print "env via getenv is: ".getenv("USER")."\n";
?>
</body>
</html>
/ #
/ # export USER=Sascha
/ # echo $USER
Sascha
/ # php test.php
<html>
<head>
<title>Show Use of environment variables</title>
</head>
<body>
PHP Notice: Array to string conversion in /test.php on line 7
PHP Notice: Undefined index: USER in /test.php on line 7
env via $_ENV is:
env via getenv is: Sascha
</body>
</html>
/ #
答案 1 :(得分:0)
我做了以下操作来解决此问题:
使用此命令将环境变量写入项目文件夹中名为.env的文件。
CMD ["env >> /path/to/project/.env"]
安装dotenv软件包,该软件包将环境变量从文件加载到$ _ENV
composer require vlucas/phpdotenv
加载程序包并将其用作
require 'vendor/autoload.php'
$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();
getenv('VAR_NAME');
希望有帮助。
答案 2 :(得分:-1)
您只需要使用不同的引号,它对我来说就是有用的
<html>
<head>
<title>Show Use of environment variables</title>
</head>
<body>
<?php
print "env is: ".$_ENV['USER'];
?>
</body>
</html>