6

次のようなシンボリックリンクを含むファイルシステム構造があります。

folder123
    index.php
    config.php -> symlink to shared/config.php
shared
    config.php

コマンド ラインで index.php を実行します。index.php には、他のフォルダー内のファイルへのシンボリック リンクである config.php が含まれています。

config.php スクリプトから index.php ファイルのパスを知るにはどうすればよいですか? 必要な結果は、「shared」ではなく「folder123」(完全なパス) です。したがって、__FILE__ は使用できません。

これは、ブラウザによって実行されるスクリプトで機能します(少なくとも私の場合、それは folder123 - ベースディレクトリと同じです):

$_SERVER['DOCUMENT_ROOT']

コマンドラインにも何かが必要です。

のように見えます

$_SERVER['PWD']

必要なものですが、文書化されていないため、信頼できる方法ではありません。また、必要な結果を得るには、それを SCRIPT_FILENAME と組み合わせる必要があります。PWD は、スクリプトが実行されたディレクトリをフル パスではなく表示します。

getcwd は有望に見えますが、chdir で変更できます。より良い代替手段が見つからない場合は、それを使用します。

4

2 に答える 2

12

どのファイルにファイルが含まれているかを判断する方法があるかどうかはわかりませんが、実行中のプログラムの名前 (index.phpこの場合) を$argv[0]取得することが$_SERVER['argv'][0]できます。

//config.php
//running path
$path = dirname(realpath($argv[0]));
于 2012-06-20T14:31:47.273 に答える
-2

PHP 5.3以降を使用している場合は、使用できます

$path = __DIR__;

代わりは。

http://php.net/manual/en/language.constants.predefined.php

于 2015-05-28T14:08:04.060 に答える