2016-04-02 2 views
1

私はこの情報を必要とする他のページのホストに含まれているファイルに次のコードを書いています。含まれている場合、ファイルのパスに相対的なScandir?

$directory_list = scandir("../packages"); 
$known_directories = [ 
    ".", 
    ".." 
]; 
$unknown_directories = $result = array_diff($directory_list, $known_directories); 

このコードが含まれているファイルを直接開くと、正常に動作します。しかし、このファイルは、このファイルに含まれることによって、この情報を他のファイルに提供することができる必要があります。 scandirが、このコードを含むファイルに関連するパス上で動作しているようです。

このファイルがどこに含まれていても、インクルードファイルのパスはどのように使用しますか?

答えて

1

scandirにあなたのパスにdirname(__FILE__)を追加しよう:

$directory_list = scandir(dirname(__FILE__)."/../packages"); 
$known_directories = [ 
    ".", 
    ".." 
]; 
$unknown_directories = $result = array_diff($directory_list, $known_directories); 

それが動作するはず__FILE__ためにはhere

__FILE__に解決のシンボリックリンクを含むファイルのフルパスとファイル名を記述されています。インクルードの内部で使用される場合、インクルードされるファイルの名前は です。

あなたも__DIR__

__DIR__ファイルのディレクトリとdirname(__FILE__)を置き換えることができます。インクルードの内部で使用される場合は、 というディレクトリがインクルードされます。これは dirname(__FILE__)に相当します。このディレクトリ名には、ルートディレクトリでない限り末尾にスラッシュが付きません( )。

関連する問題