sven: Enviroment Variablen sind leer...!?

Hallo,

ziemlich seltsam ist das, was sich mir heute abspielte. Die sonst
eigentlich (eigentlich!) immer gut gefüllten Umgebungsvariablen, auf
die sich seit PHP 4.0.1 ja unter $_ENV als superglobale zugreifen
lässt, sind irgendwie einfach leer. Ja, richtig, sie sind leer.

Es ist folgendes: PHP 4.3.9, Windows 2000, Apache 2. Alles wunder-
bar, alles wunderschön. PHP-Info, Enviroment-Sektion, prall gefüllt
mit netten Informationen, nebenbei auch der Umgebungsvariable "OS",
wo ganz nett Windows_NT drin steht. Und genau darum geht es gerade,
dort kann nämlich wohl auch mal Gentoo Linux drin stehen, und dann
müssen das ja 250 PHP-scripte wissen, damit sie alle ordentlich auf
das Dateisystem zugreifen (die Windows-Leute habens ja nicht so mit'm
Root und mounten und sowas ;o).

Also was liegt näher, als das ganze ganz simpel mit

if($_ENV['OS'] == 'Windows_NT')
   echo "freut euch, Häcker, denn Windows läuft, hehe";

zu überprüfen. Doch anscheinend Fehlschlag. Nach einem netten
print_r($GLOBALS) fällt ihm anscheinend ein, dass $_ENV zwar dar ist,
aber absolut leer! Nix drin!

Und nun die finale, preisgekrönte Preisfrage: Wo sind unsere netten
kleinen Umgebungsvariabelchen hin?

Hat jemand eine Antwort auf diese seltsame Gegebenheit?
ich wäre sehr verbunden :)

thx,

der Sven

  1. Das einzige, was mir dazu einfällt, ist, daß du irgendwann mal statt

    $_ENV ==

    $_ENV =

    geschrieben hast.

    Was gibt denn eine solche Datei aus:

    <?php
    phpinfo();

    var_dump($_ENV);

    var_dump($HTTP_ENV_VARS);
    ?>

    als workaround würde ich vorschlagen, die ausgabe von phpinfo() mit hilfe des Ausgabepuffers in eine Variable zu schreiben und dann mit preg_match zu parsen, so daß du deine Variablen selbst belegen kannst. Klingt blöd, funktioniert aber.

    Grüße

    Heizer

    1. Vielleicht hilft dir das auch weiter:

      http://www.php.net/manual/de/ini.sect.data-handling.php#ini.variables-order

      Grüße

      Heizer

    2. Hallo Heizer,

      Das einzige, was mir dazu einfällt, ist, daß du irgendwann mal statt
      $_ENV ==
      $_ENV =
      geschrieben hast.

      hm, ich wüsste jetzt zwar nicht wo, aber daran liegt es definitiv nicht.

      Was gibt denn eine solche Datei aus:
      <?php
      phpinfo();
      var_dump($_ENV);
      var_dump($HTTP_ENV_VARS);
      ?>

      $_ENV ist einfach leer. mit den veralteten HTTP_ENV_VARS ist es nicht anders. Sehr verwunderlich, denn in phpinfo() wurden doch gerade die ENV-Variablen ausgelest! ;)

      als workaround würde ich vorschlagen, die ausgabe von phpinfo() mit hilfe des Ausgabepuffers in eine Variable zu schreiben und dann mit preg_match zu parsen, so daß du deine Variablen selbst belegen kannst. Klingt blöd, funktioniert aber.

      Nö, klingt gar nicht blöd, ist aber verdammt unperfomant und ändert nix an dem Problem.

      Gruß,

      Sven