Erik: PHP als CGI und $_SERVER['PHP_SELF']

wenn ich PHP als Modul laufen lasse bringt mir $_SERVER['PHP_SELF'] ja den absoluten Pfad zum root-Verzeichniss.

Läuft PHP aber als CGI, bekomme ich nur den Verzeichnissnamen.

Wie kann ich das also umgehen?

  1. hi,

    wenn ich PHP als Modul laufen lasse bringt mir $_SERVER['PHP_SELF'] ja den absoluten Pfad zum root-Verzeichniss.

    Läuft PHP aber als CGI, bekomme ich nur den Verzeichnissnamen.

    Wie kann ich das also umgehen?

    Willst du vielleicht einfach nur $_SERVER['DOCUMENT_ROOT'] davorsetzen?

    Ansonsten bitte etwas detailierter, welchen Wert genau du ermitteln möchtest.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. echo $begrüßung;

    wenn ich PHP als Modul laufen lasse bringt mir $_SERVER['PHP_SELF'] ja den absoluten Pfad zum root-Verzeichniss.

    Laut Handbuch liefert es den Pfad relativ zum document root.

    Läuft PHP aber als CGI, bekomme ich nur den Verzeichnissnamen.

    Im CGI-Modus können nicht alle Webserver-Details erfragt werden. Deswegen ist es PHP nicht möglich, den Pfad ebenfalls relativ zum document root des Webservers anzugeben, da es document root nicht kennt. Eventuell kommt das DOCUMENT_ROOT in den vom Server gesendeten CGI-Variablen mit, aber darauf kann sich PHP nicht verlassen. Als Modul konnte es den Webserver direkt befragen. PHP_SELF ist auch erst seit 4.3.0 in der CGI-Variante erhältlich.

    Wie kann ich das also umgehen?

    Kommt drauf an was du am Ende haben möchtest. Immer den vollständigen Pfad zur aktuellen Datei liefert __FILE__, aber das muss nicht immer die aufgerufene sein. Alle anderen Angaben müssen nicht immer vorhanden sein, können dann aber mit print_r($_SERVER) oder über phpinfo() angesehen werden.

    echo "$verabschiedung $name";