Environment variable in PHP-docker container

lova picture lova · Feb 18, 2016 · Viewed 11.9k times · Source

I want to show an env var in my docker container. The PHP script looks like this:

<html>
 <head>
  <title>Show Use of environment variables</title>
 </head>
 <body>
  <?php
  print "env is: ".$_ENV["USER"]."\n";
  ?>
 </body>
</html>

I use OpenShift to start the container. The PHP - container shows:

env is: 

Now I change the dc config of my container:

oc env dc/envar USER=Pieter
deploymentconfig "envar" updated

When I access the container. The env var of USER is Pieter

docker exec -it 44a0f446ae36 bash
bash-4.2$ echo $USER
Pieter

But my script remains showing: "env is:" It does not fill in the variable.

Answer

Sascha Kluth picture Sascha Kluth · Feb 19, 2016

Change

print "env is: ".$_ENV["USER"]."\n";

to

print "env is: ".getenv("USER")."\n";

.

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>