2011-09-05 15 views
10

Per quanto ne so, il php getcwd() (e funzioni simili, ad esempio dirname(__FILE__)), dovrebbe restituire la directory corrente del file in esecuzione.php getcwd() risoluzione target di symlink invece della directory corrente

Se la directory corrente sembra essere un link simbolico a un'altra directory, php (presumibilmente in concomitanza con apache) deve restituire il percorso che mostra il nome link simbolico come il 'directory' siete in.

Esempio :

from /var/www, 
directory 'one' contains index.php 
symlink 'two' points at directory 'one' 

one/index.php: <?php echo getcwd(); ?> 

Accesso http://localhost/two/index.php in un browser mostra /var/www/one.

mi aspetterei per mostrare /var/www/two

Qualcuno sa se questo è un ambiente PHP o Apache posso cambiare? O non sono in grado di utilizzare i collegamenti simbolici in questo modo?

+1

Hai capito? Sono interessato a questo stesso caso d'uso. – kalenjordan

+0

Apache è configurato per seguire symLinks? Mi piace 'Opzioni FollowSymLinks' –

+0

Non penso che questo abbia nulla a che fare con Apache. È una "funzionalità" PHP. Se lo inserisci nella riga di comando 'mkdir a; ln -s a b; php -r 'chdir ("b"); echo getcwd(); '', php ti mostrerà che ti trovi in ​​una directory chiamata' a ', anche se tu chdir() ed a' b '. – edam

risposta

8

OK capito. Utilizzare $_SERVER['SCRIPT_FILENAME'] se si utilizza il browser. Tramite la riga di comando, è possibile ottenere la directory con collegamento simbolico corrente usando exec("pwd")

Problemi correlati