Mailinglisten-Archive |
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