次のようなシンボリックリンクを含むファイルシステム構造があります。
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 で変更できます。より良い代替手段が見つからない場合は、それを使用します。