PHPでは、現在の作業ディレクトリの取得は、ファイルの読み取り、パスの設定など、多くのシナリオで非常に重要な操作です。PHPは、 PATH情報を取得するさまざまな方法を提供します。この記事では、これらの2つの機能の役割を紹介し、それらを組み合わせて使用して現在の作業ディレクトリへのパスを取得する方法を示します。
getCwd()は、PHPの組み込み関数です。そのフルネームは「現在の作業ディレクトリを取得」です。つまり、現在の作業ディレクトリを取得します。このディレクトリは、スクリプトが実行されるディレクトリです。通常、絶対的なパスを返します。
例:
<?php
echo getcwd();
?>
出力は次のとおりです。
/var/www/html/project
このパスは、現在のスクリプト実行の作業ディレクトリです。
get_include_path()は、PHP構成のinclude include (_path)を取得するために使用されます。つまり、ファイルを探すときにPHPが検索するパスの収集です。パスには、セミコロン(Windows)またはコロン(Linux/MacOS)で区切られた複数のディレクトリを含めることができます。
例:
<?php
echo get_include_path();
?>
出力例:
.:/usr/local/lib/php
ここのドットは、現在のディレクトリを表します。
getcwd()は現在の作業ディレクトリを直接取得できますが、 cunter_pathの現在の作業ディレクトリの場所を知るか、 include_pathの相対パスを絶対パスに変換する必要がある場合があります。現時点では、2つの用途を組み合わせることで、パスをより柔軟に処理できます。
<?php
// 現在の作業ディレクトリを取得します
$currentDir = getcwd();
echo "現在の作業ディレクトリはです: " . $currentDir . "\n";
// 得る include_path
$includePath = get_include_path();
echo "include_path コンテンツはです: " . $includePath . "\n";
// 意思 include_path 配列に分割されます
$paths = explode(PATH_SEPARATOR, $includePath);
// トラバーサルパス,出力フルパス
foreach ($paths as $path) {
if ($path === '.' || $path === '') {
// 現在のディレクトリを使用します getcwd() 代替
$absolutePath = $currentDir;
} else {
// 他のパスは変わらないままです
$absolutePath = $path;
}
echo "絶対パス: " . $absolutePath . "\n";
}
?>
現在の作業ディレクトリはです: /var/www/html/project
include_path コンテンツはです: .:/usr/local/lib/php
絶対パス: /var/www/html/project
絶対パス: /usr/local/lib/php
include_pathのドットは、現在のディレクトリを表します。ここでは、getcwd()によって取得されたパスに置き換えます。
この方法では、各パスを含むパスの完全なリストを取得できます。これは、プログラムがファイルを検索または処理するのに便利な絶対パスです。
include_pathに従って、リソースファイルを読む必要があるプロジェクトがあるとします。最初に上記の方法を使用して、相対パスを絶対パスに変換して、パスの問題によりファイルを見つけることができないことを避けることができます。
さらに、これらの2つの機能を組み合わせることで、特に環境や展開中にパスが異なる場合、コードはより携帯可能になります。
getCwd()は、現在の作業ディレクトリ、通常はスクリプトが実行されているディレクトリを取得しますが、コードが含まれているか、実行中の環境が異なる場合、結果は異なる場合があります。
include_pathはphp.iniで構成するか、 set_include_path()を介して動的に設定できます。
パスセパレーターは、オペレーティングシステムによって異なります。 PHPビルトイン定数を使用すると、 path_separatorとdirectory_separatorは互換性を向上させることができます。
getCwd()は、現在の作業ディレクトリへの絶対パスを直接返します。
get_include_path() phpを返すPHPには、相対パスと絶対パスが含まれる場合があります。
組み合わせて、付属のパス内のすべての相対パス(など)を絶対パスに変換することができ、ファイル操作を容易にします。
これら2つの機能を合理的に利用することにより、PHP開発者はファイルパスをよりよく制御し、パスエラーによって引き起こされるトラブルを回避できます。
<?php
// 包括的なサンプル関数:戻る include_path 中所有路径的絶対パス数组
function getAbsoluteIncludePaths() {
$currentDir = getcwd();
$includePaths = explode(PATH_SEPARATOR, get_include_path());
$absolutePaths = [];
foreach ($includePaths as $path) {
if ($path === '.' || $path === '') {
$absolutePaths[] = $currentDir;
} else {
$absolutePaths[] = $path;
}
}
return $absolutePaths;
}
// コール例
$paths = getAbsoluteIncludePaths();
foreach ($paths as $p) {
echo $p . PHP_EOL;
}
?>
このコードスニペットは、すべての絶対パスを含む配列を簡単に取得できます。これは、後続のパス処理に便利です。