2

project2別のフォルダーへのシンボリックリンクとして追加したいくつかの汎用ファイルで拡張された、いくつかの PHP ファイルを含むフォルダーがありますproject。例えば:

project/index.php 
project/config.php 
project/templates/...
...

project2/project2_functions.php
project2/config.php
project2/index.php -> ../project/index.php
project2/templates/...
...

ただし、ブラウズすると、 などのコンテンツproject2/index.phpを使用して配信しているようです。コンテンツを配信して含めるファイルを見つけるために使用される作業ディレクトリが設定される前でも、PHP はシンボリック リンクをいくらか解決しているようです。次に、間違った場所に設定されます。この動作を回避する方法はありますか?project/config.phpproject/templates/

4

1 に答える 1

1

それはすべて、これらのファイルをどのように含めるかによって異なります。

$ mkdir {a,b}
$ echo 'in A' > a/file
$ echo 'in B' > b/file
$ echo '<?php echo file_get_contents(__DIR__."/file"); echo file_get_contents("./file");' > a/idx.php        
$ ln -s ../a/idx.php b/
$ cd a
$ php idx.php 
in A
in A
$ cd ../b
$ php idx.php 
in A
in B

について__FILE__のコメントに注意してください(これは にも有効です__DIR__):

PHP 4.0.2 以降、FILEにはシンボリック リンクが解決された絶対パスが常に含まれますが、古いバージョンでは状況によっては相対パスが含まれていました。

于 2013-06-05T17:54:47.957 に答える