Environment Variablen
am 08.05.2006 14:27:23 von Ralf Hess
Hallo,
ich habe ein kleines Problem speziell mit den Variablen $_ENV[USER],
$_ENV[LOGNAME] und $_ENV[SHELL]. Mit vielen anderen Variablen auch noch
aber die brauch ich für meine Zwecke auch nicht.
Ich hab auf zwei Rechnern SuSE 10.0 installiert. Dazu Apache 2 und PHP. Auf
einem Rechner nur PHP 4 und apache2_mod-php4 und auf dem anderen Rechner
PHP 4 und 5 und apache2_mod-php5. An dem Rechner auf dem nur PHP 4
installiert ist kann ich die oben genannten Variablen abfragen und bekomme
auch das erwartete Ergebnis. Am zweiten Rechner kann ich nur einen
Bruchteil der $_ENV-Variablen von Rechner 1 abfragen.
Am PHP 5 Rechner zeigt mir die Funktion phpinfo() bei der $_ENV[Shell] den
Wert /bin/sh an obwohl für den User als Shell /bin/bash eingetragen ist und
bei Abfrage im Terminal auch richtig angezeigt wird.
Nachdem ich jetzt seit rund 6 Stunden nichts anderes mache als im Internet
nach einer Lösung zu suchen und noch nichts gefunden habe, wende ich mich
in der Hoffnung, dass mir jemand weiterhelfen kann, an diese Newsgroup. Ich
hab gegoogled, war auf php.net und hab die Einschlägigen Newsgroups
durchstöbert. Bisher Fehlanzeige.
Ich hab die Konfigurationsdateien der beiden Rechner verglichen (Apache2,
PHP) und bin nicht fündig geworden. Da die Variablen aber laut
Beschreibungen von der Shell zur Verfügung gestellt werden, liegt der
Fehler womöglich gar nicht an PHP oder Apache.
Wäre super, wenn mir jemand sagen könnte an welchem Schräubchen ich drehen
muss um die drei oben genannten Variablen wieder abfragen zu können.
Danke
Ralf
Re: Environment Variablen
am 08.05.2006 21:45:57 von Matthias Esken
On Mon, 08 May 2006 14:27:23 +0200, Ralf Hess wrote:
> Am PHP 5 Rechner zeigt mir die Funktion phpinfo() bei der $_ENV[Shell] den
> Wert /bin/sh an obwohl für den User als Shell /bin/bash eingetragen ist und
> bei Abfrage im Terminal auch richtig angezeigt wird.
Rückfrage: Für welchen User?
Gruß,
Matthias
Re: Environment Variablen
am 09.05.2006 08:01:57 von Ralf Hess
Matthias Esken wrote:
> On Mon, 08 May 2006 14:27:23 +0200, Ralf Hess wrote:
>
> Rückfrage: Für welchen User?
>
Für den User der auch an dem Rechner angemeldet ist an dem ich im Browser
das phpinfo()-Skript aufrufe und auf dem der Apache installiert ist. Läuft
alles auf einem Rechner. Das verrückte ist, dass es auf dem PHP 5 Rechner
auch schon funktioniert haben muss. Ich hab noch einen Ausdruck von
phpinfo() von diesem Rechner gefunden. Und in diesem Ausdruck sind die
ganzen $_ENV-Variablen zu sehen. Da ich aber seit diesem Ausdruck auf dem
Rechner ständig Updates nachinstalliert habe und den Rechner danach nicht
mehr für Webanwendungen benutzt habe, kann ich nicht sagen, ab welchem
Zeitpunkt es nicht mehr funktioniert.
Gruss Ralf
Re: Environment Variablen
am 09.05.2006 09:13:13 von Helmut Chang
Ralf Hess schrieb:
>> Rückfrage: Für welchen User?
>>
> Für den User der auch an dem Rechner angemeldet ist an dem ich im Browser
> das phpinfo()-Skript aufrufe und auf dem der Apache installiert ist. Läuft
> alles auf einem Rechner.
Aber der User, unter dem der Apache läuft, ist garantiert ein anderer.
Und dessen Shell steht in $_ENV['SHELL']. Und der steht auch in
$_ENV['USER']. Und...
Ãberleg einmal: wessen Environment liest denn PHP aus? Seines oder das
des Clients?
gruss, heli
Re: Environment Variablen
am 09.05.2006 09:56:45 von Ralf Hess
Helmut Chang wrote:
> Ralf Hess schrieb:
>
> Aber der User, unter dem der Apache läuft, ist garantiert ein anderer.
> Und dessen Shell steht in $_ENV['SHELL']. Und der steht auch in
> $_ENV['USER']. Und...
>
> Ãberleg einmal: wessen Environment liest denn PHP aus? Seines oder das
> des Clients?
>
Das des Clients. Wie gesagt es hat ja schon funktioniert. $_ENV[USER] war ja
schon mit meiner Benutzeranmeldung belegt und mein Apache läuft definitiv
nicht unter meiner Benutzerkennung. Ich hab wohl auch versäumt zu erwähnen,
dass die Variable $_ENV[USER] leer ist bzw. gar nicht existiert. Würde der
Benutzer des Apache abgefragt, müÃte zumindest überhaupt ein Wert angezeigt
werden.
Das Environment des Servers ist doch in den $_SERVER-Variablen gespeichert.
So hab ich das Ganze zumindest bisher verstanden. Da ich mich aber eher als
Neuling auf dem Gebiet PHP bezeichnen würde, lass ich mich da auch gerne
eines Besseren belehren. Bin über jeden Hinweis oder Ansatzpunkt froh.
Gruss Ralf
Re: Environment Variablen
am 09.05.2006 11:45:20 von Christian Schmelzer
Ralf Hess wrote:
> Helmut Chang wrote:
>
>> Ralf Hess schrieb:
>>
>> Aber der User, unter dem der Apache läuft, ist garantiert ein
>> anderer. Und dessen Shell steht in $_ENV['SHELL']. Und der steht
>> auch in $_ENV['USER']. Und...
>>
>> Überleg einmal: wessen Environment liest denn PHP aus? Seines oder
>> das des Clients?
>>
> Das des Clients. Wie gesagt es hat ja schon funktioniert. $_ENV[USER]
> war ja schon mit meiner Benutzeranmeldung belegt und mein Apache
> läuft definitiv nicht unter meiner Benutzerkennung. Ich hab wohl auch
> versäumt zu erwähnen, dass die Variable $_ENV[USER] leer ist bzw. gar
> nicht existiert. Würde der Benutzer des Apache abgefragt, müßte
> zumindest überhaupt ein Wert angezeigt werden.
> Das Environment des Servers ist doch in den $_SERVER-Variablen
> gespeichert. So hab ich das Ganze zumindest bisher verstanden. Da ich
> mich aber eher als Neuling auf dem Gebiet PHP bezeichnen würde, lass
> ich mich da auch gerne eines Besseren belehren. Bin über jeden
> Hinweis oder Ansatzpunkt froh.
>
Hallo,
ganz bestimmt kann PHP *nicht* das Enviroment des Clients auslesen. Und das
ist auch gut so.
Christian
Re: Environment Variablen
am 09.05.2006 14:26:37 von Ralf Hess
Christian Schmelzer wrote:
> Ralf Hess wrote:
>> Helmut Chang wrote:
>>
>>> Ralf Hess schrieb:
>>>
> Hallo,
> ganz bestimmt kann PHP *nicht* das Enviroment des Clients auslesen. Und
> das ist auch gut so.
>
Hallo,
das stimmt meines Wissens so nicht ganz. PHP kann es wohl nicht direkt
auslesen aber der Browser auf dem Client kann es und der gibt diese
Variable an PHP weiter. Und wie gesagt, die Frage ist nicht ob es geht,
sondern wie, denn ich habe einen Ausdruck vor mir liegen bei dem sowohl die
Variable $_ENV[USER] als auch $_ENV[LOGNAME] mit meinem Usernamen belegt
war.
Gruà Ralf
Re: Environment Variablen
am 09.05.2006 14:58:07 von Frank Schenk
Ralf Hess wrote:
> Christian Schmelzer wrote:
>
>
>>Ralf Hess wrote:
>>
>>Hallo,
>>ganz bestimmt kann PHP *nicht* das Enviroment des Clients auslesen. Und
>>das ist auch gut so.
so ist es
> Hallo,
>
> das stimmt meines Wissens so nicht ganz. PHP kann es wohl nicht direkt
> auslesen aber der Browser auf dem Client kann es und der gibt diese
> Variable an PHP weiter. Und wie gesagt, die Frage ist nicht ob es geht,
> sondern wie, denn ich habe einen Ausdruck vor mir liegen bei dem sowohl die
> Variable $_ENV[USER] als auch $_ENV[LOGNAME] mit meinem Usernamen belegt
> war.
Wenn du ein Script per:
/usr/bin/php scriptname.php
startest läuft es unter deinem User und PHP stehen dann auch dein
Enviroment zur Verfügung - wie jedem Programm, das du direkt auf deinem
Rechner startest.
gruÃ, Frank
Re: Environment Variablen
am 09.05.2006 17:12:06 von Sven Drieling
Ralf Hess wrote:
Hallo,
> das stimmt meines Wissens so nicht ganz. PHP kann es wohl nicht direk=
t
> auslesen aber der Browser auf dem Client kann es und der gibt diese
> Variable an PHP weiter.
Wenn PHP als CGI läuft enthält $_ENV die CGI-Werte, *grübel* da
müssten dann auch z.B. User und Passwort eines Logins per
HTTP Authentication mit drin sein. Die hat man dann aber selbst
im Browser (mal) eingetippt. Automatisch sollten keine User-Infos
vom Client zum Server übertragen werden. Mit den Env-Werten aus
der Shell auf dem eigenen Rechner haben die Env-Werte auf dem
Server im Netz nichts zu tun.
=20
Wenn PHP als Apache-Modul läuft sollten in $_ENV nur die
Informationen des Users liegen unter den der Apache läuft.
=20
> Und wie gesagt, die Frage ist nicht ob es geht,
Wenn es geht, wäre es eine schwere Sicherheitslücke.
tschuess
[|8:)
Re: Environment Variablen
am 09.05.2006 20:03:34 von Helmut Chang
Ralf Hess schrieb:
> das stimmt meines Wissens so nicht ganz. PHP kann es wohl nicht direkt
> auslesen aber der Browser auf dem Client kann es und der gibt diese
> Variable an PHP weiter.
Ein Browser, der meinen Anmeldenamen auf meinem Rechner an einen
Webserver weiterschickt, fliegt sicher von der Platte.
gruss, heli
Re: Environment Variablen
am 09.05.2006 21:32:05 von Matthias Esken
On Tue, 09 May 2006 14:26:37 +0200, Ralf Hess wrote:
> das stimmt meines Wissens so nicht ganz. PHP kann es wohl nicht direkt
> auslesen aber der Browser auf dem Client kann es und der gibt diese
> Variable an PHP weiter.
Die Environment-Informationen? Niemals.
> Und wie gesagt, die Frage ist nicht ob es geht,
> sondern wie, denn ich habe einen Ausdruck vor mir liegen bei dem sowohl die
> Variable $_ENV[USER] als auch $_ENV[LOGNAME] mit meinem Usernamen belegt
> war.
Dann sind die in der Umgebung auf dem Server so gesetzt. Möglicherweise
läuft der Apache ja unter deinem Benutzeraccount.
Wenn du uns immer noch nicht glaubst, dann lies die Dokumentation unter
http://www.php.net/manual/de/reserved.variables.php:
| Umgebungsvariablen: $_ENV
|
| Anmerkung: Dieses Array wurde mit PHP 4.1.0 eingeführt. In älteren
| Versionen benutzen Sie das Array $HTTP_ENV_VARS.
|
| Diese Variablen werden aus der Systemumgebung, in der der Parser läuft in
| den globalen Namensraum Von PHP importiert. Viele davon werden vom System
| generiert, unter dem der Parser läuft und unterschiedliche Systeme benutzen
| unterschiedliche Umgebungsvariablen. Eine verbindliche Liste anzugeben ist
| daher unmöglich. Schauen Sie in der Dokumentation Ihres Systems nach den
| dort definierten Umgebungsvaraiblen.
Wichtig ist "aus der Systemumgebung, in der der Parser läuft". Ein Konzept,
bei dem der Browser mal eben lustig dem Webserver selbsttätig
Environment-Variablen zur Verfügung stellte, wäre ein dermaßen gravierendes
Sicherheitsrisiko, dass so etwas nicht mal Microsoft machen würde.
Gruß,
Matthias
Re: Environment Variablen
am 10.05.2006 00:22:41 von Niels Braczek
Matthias Esken schrieb:
> Wichtig ist "aus der Systemumgebung, in der der Parser läuft". Ein Ko=
nzept,
> bei dem der Browser mal eben lustig dem Webserver selbsttätig
> Environment-Variablen zur Verfügung stellte, wäre ein dermaßen gr=
avierendes
> Sicherheitsrisiko, dass so etwas nicht mal Microsoft machen würde.
Ganz schön blauäugig. Hat Windows/Office nicht so 'ne versteckte
Phone-Home-Funktion?
SCNR
Niels
--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Re: Environment Variablen
am 10.05.2006 08:28:55 von Ralf Hess
Ralf Hess wrote:
Hallo,
ich zweifel nicht an eueren Aussagen. Dennoch habe ich einen Ausdruck vor
mir liegen wo die Variablen mit meiner Benutzerkennung belegt sind. Mein
Apache läuft aber nicht unter meiner Benutzerkennung sondern unter wwwrun.
Die Variable $_ENV[SHELL] ist mit /bin/bash belegt. Der User wwwrun hat
aber aus Sicherheitsgründen keine Shell.
Ich hab zwischenzeitlich auch festgestellt, dass es völlig egal ist wer an
dem Client angemeldet ist. Die Variable ist immer mit meiner
Benutzerkennung belegt. Ihr habt also wohl alle recht. Mein Problem ist
damit aber leider immer noch nicht gelöst, denn ich wüÃte gerne wo
phpinfo() meine Benutzerkennung hernimmt.
Es sind ja nicht nur die 3 Variablen aus meinem ersten Posting die mich
verwundern. Ich hab am PHP 5 Rechner nur 25 $_ENV-Variablen zur Verfügung
während es am PHP 4 Rechner satte 91 sind.
Und jetzt kommt das Beste. Ich habe den PHP 4 Rechner Gestern zum ersten mal
seit der Installation neu gebootet und gerade eben nochmal phpinfo()
aufgerufen und siehe da jetzt sind auch an dem Rechner die ganzen schönen
Variablen weg. Es scheint also wohl an den Installierten Paketen oder den
Updates zu liegen. Da werde ich wohl bei Gelegenheit nochmal einen Rechner
neu installieren und mir die Ausgabe von phpinfo() anschauen bevor ich die
Updates installiere.
Vielleicht findet aber doch noch einer von Euch die Ursache vor mir, dann
wäre für eine kurze Info sehr dankbar.
Gruss Ralf
Re: Environment Variablen
am 10.05.2006 10:54:12 von Joerg Behrens
Sven Drieling schrieb:
> Ralf Hess wrote:
>
> Hallo,
>
>> das stimmt meines Wissens so nicht ganz. PHP kann es wohl nicht direkt
>> auslesen aber der Browser auf dem Client kann es und der gibt diese
>> Variable an PHP weiter.
>
> Wenn PHP als CGI läuft enthält $_ENV die CGI-Werte, *grübel* da
> müssten dann auch z.B. User und Passwort eines Logins per
> HTTP Authentication mit drin sein.
Nein, die HTTP Auth Variablen fuer User und Password stehen nicht in
(PHP) CGI Scripts zur Verfügung. Die sind nur da wenn man mod_php benutzt.
Gruss
Joerg
--
TakeNet GmbH Mobil: 0171/60 57 963
D-97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
Re: Environment Variablen
am 10.05.2006 11:25:31 von unknown
Post removed (X-No-Archive: yes)