2012-05-10 4 views
10

Ich habe ein Skript, das von einem Ordner in einer anderenaktuelles Verzeichnis von symlink'd PHP-Skript bekommen und nicht unbedingt der PHP-Skript

/var/www/default/index.php 

Symlink ist, das jedoch zu

/var/www/mysite/index.php 

Symlink ist, wenn i Rufen Sie DIR von mysite der Pfad wird standardmäßig in den ursprünglichen Pfad aufgelöst. Wie kann ich den mysite Weg machen zurückkehren (die Symlink-Ordner nicht der Ordner selbst)

+0

Sie könnten 'var_dump ($ _ SERVER)' verwenden, um zu sehen, ob eine der Pfadvariablen den Pfad enthält, den Sie n sind Eeding. – drew010

Antwort

13

Für Web-Server fordert

dirname ($ _ SERVER [ 'SCRIPT_FILENAME']) wird dir geben, was Sie brauchen. Wenn das nicht funktioniert, wird $ _SERVER ['PHP_SELF'] oder sogar REQUEST_URI es haben.

Für CLI (Command Line)

dies _SERVER in cli (Kommandozeile) Skripte wie $ nicht funktionieren wird von dem Web-Server hinzugefügt.

Glücklicherweise ist es mit cli-Skripten viel einfacher (da es keinen Webserver gibt, der sich mit Dingen herumschlägt).

Sie müssen nur die Befehlszeile lesen, die das Skript gestartet hat: http://php.net/manual/en/reserved.variables.argv.php. Das erste Argument $ argv [0] ist immer der Name, der zum Ausführen des Skripts verwendet wurde.

+0

Danke Robbie für Ihren Vorschlag. Mit dem, was du gesagt hast, habe ich das gefunden, was sowohl für Web als auch für CLI funktioniert hat. definieren ('ROOT', dirname ($ _ SERVER ['SCRIPT_FILENAME']))); –

+0

Gern geschehen. Danke für die Bestätigung, dass es funktioniert hat. – Robbie

+0

Schöne Lösung, Robbie. Könnten Sie bitte den Tippfehler in _dir_name_ (sollte _dirname_ sein) beheben – Peter

0

Wenn Sie nach dem vollständigen nicht aufgelösten Systempfad eines CLI-Skripts suchen, ist SCRIPT_PATH nicht ausreichend.

php -f symlink/script.php 

SCRIPT_FILENAME enthält Symlink/script.php

ich ein PHP/Kern erstellt haben, die gets the unresolved path to the php file.

Hier ist das Ergebnis der Funktion ist:

$ php -f subdir/mysymlink/subdir/mysymlink/subdir/mysymlink/app.php 
PWD: /tmp/phpcode                   
SCRIPT_FILENAME: subdir/mysymlink/subdir/mysymlink/subdir/mysymlink/app.php     
___FILE__ : /tmp/phpcode/app.php                
getSymlink(): /tmp/phpcode/subdir/mysymlink/subdir/mysymlink/subdir/mysymlink    
Verwandte Themen