2011-09-05 10 views
10

私の知る限り、PHPのgetcwd()(および類似の関数、例えばdirname(__FILE__))は、実行されているファイルの現在のディレクトリを返すことになっています。php getcwd()現在のディレクトリの代わりにsymlinkのターゲットを解決する

カレントディレクトリは(おそらくApacheのと併せて)、PHPがあなたにしている「ディレクトリ」としてシンボリックリンク名を示すパスを返すことになって、別のディレクトリへのシンボリックリンクであることを起こる場合。

例:ブラウザでhttp://localhost/two/index.phpにアクセス

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

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

/var/www/oneを示しています。

私はそれが、これは私が変更することができ、PHPやApacheの設定であれば誰でも/var/www/two

を知っています表示するために期待しますか?あるいは、このような方法でシンボリックリンクを使用できないのですか?

+1

あなたはそれを理解しましたか?私はこの同じユースケースに興味があります。 – kalenjordan

+0

Apacheはsymlinkに従うように設定されていますか? 'Options FollowSymLinks'のように –

+0

これはApacheとは関係ないと思います。それはPHPの "機能"です。これをコマンドライン 'mkdir a; ln -s a b; php -r 'chdir( "b"); echo getcwd(); ''、phpはあなたが' b 'にchdir()していても' a 'というディレクトリにいることを示します。 – edam

答えて

8

OK分かりました。ブラウザの場合は$_SERVER['SCRIPT_FILENAME']を使用してください。コマンドラインで、現在のシンボリックリンクされたディレクトリを取得することができますexec("pwd")

関連する問題