phpbar.de logo

Mailinglisten-Archive

[php] Ermitteln des aktuellen Verzeichnisses

[php] Ermitteln des aktuellen Verzeichnisses

Alexander Weber alxwe_(at)_t-online.de
Sun, 19 Nov 2000 20:05:37 +0100


Hallo Mike,
versuch's doch mal mit $PHP_SELF. In dieser Variable steht der aktuelle
Script-Name drin. Die sollte es auch unter älteren Version schon geben.
Da mußt Du nur noch eine Schleife außen rum basteln, daß den Teilstring
bis zum letzten "/" extrahiert, entweder von Hand Zeichen für Zeichen,
mit reg. expr. oder ganz elegant mit der Funktion dirname (siehe Doku).
Wenn in Deinem Script ein Verzeichniswechsel stattfindet, ist dies doch
kein Problem. Um das Verzeichnis zu wechseln, mußt Du schließlich
wissen, in welches Du willst. Da könntest Du eigentlich $dir="./blabla";
chdir ($dir); sagen. Dann hast Du in dieser Variable das aktuelle
Verzeichnis.
Zur Erklärung des Problems in Deiner Funktion get_current_dir(): In der
Variable $PWD steht bei fast jeder Shell der Name des aktuellen
Verzeichnisses. Mit Deiner system-Funktion startest Du im Prinzip eine
Shell als der Benutzer, unter dem der Webserver läuft, und gibst dann
das momentan aktuelle Verzeichnis aus. Das ist dann das Homeverzeichnis
dieses Benutzers und wohl kaum das, was Du suchst. Allerdings ist dieses
Verzeichnis bei vielen Systemen auf /tmp gelegt bzw. existiert nicht.
Das Du die Datei als Benutzer nobody nicht schreiben kannst, spricht für
die Konfiguration des Serverbetriebssystems. 

Bis irgendwann,
ALX



Mike Greubel wrote:
> 
> Mahlzeit ML,
> 
> Ich versuche das aktuelle Verzeichnis zu ermitteln, in dem gerade
> Operationen durchgeführt werden. Das Problem ist, das innerhalb des Scripts
> durchaus auch mal die Funktion chdir(); aufgerufen wird, und ich nicht mehr
> mit der Variable SCRIPT_URL (basename(); nimmt den Schwanz hinten weg, damit
> ich das reine, absolute Dir habe) arbeiten kann. Ich versuchte nun das Ganze
> über einen Umweg auf die Shell zu umgehen, da ich keinen passenden Befehl
> gefunden habe:
> 
> ---- codeschnipsel ----
> function get_current_dir() {
>  /* Hilfsfunktion zum ermitteln des aktuellen Verzeichnis */
> 
>  system("echo $PWD > dirname.temp");  // Kann anscheinend schon nicht
> angelegt werden
>  $fd=fopen("dirname.temp","r");
>  while (!feof($fd)) {
>   $buffer = fgets($fd, 4096);
>  }
>  fclose($fd);
>  unlink("dirname.temp");
>  return $buffer;
> 
> }
> ---- codeschnipsel ende ----
> 
> Kann jemandf feststellen, woran es scheitert? Lese/Schreibrechte sind ok.
> Gibt es vielleicht eine elegantere Möglichkeit?
> 
> MfG Mike G.
> 
> --
> ** Durchgehend geöffnet: http://www.php-center.de **
> Die PHP-Liste: mailto:php_(at)_php-center.de
> http://infosoc.uni-koeln.de/mailman/listinfo/php


php::bar PHP Wiki   -   Listenarchive