現在の位置: ホーム> 最新記事一覧> PHP RealPathを使用して、フォルダーへの絶対パスを取得します

PHP RealPathを使用して、フォルダーへの絶対パスを取得します

gitbox 2025-06-07

RealPath()関数の紹介

RealPath()関数の基本的な構文は次のとおりです。

 string realpath(string $path)
  • $パス:解析するパス。

  • 返品値:成功した場合、正規化された絶対パスを返します。失敗したときにfalseを返します。

使用の例

現在のディレクトリ内のフォルダーへの絶対パスを取得する基本的な例を次に示します。

 $relativePath = 'uploads/images';
$absolutePath = realpath($relativePath);

if ($absolutePath !== false) {
    echo "絶対的なパスはです: $absolutePath";
} else {
    echo "パスは存在しないか、解析できません。";
}

注意すべきこと

1.ターゲットパスが存在する必要があります

RealPath()は実際の既存のパスのみを解析できます。渡されたパスがファイルシステムに存在しない場合、関数はfalseを返します。したがって、それを使用する場合、最初にパスが存在するかどうかを判断することをお勧めします。

 if (file_exists($relativePath)) {
    $real = realpath($relativePath);
    echo $real;
} else {
    echo "パスは存在しません";
}

2。シンボルリンクとパス正規化

RealPath()は、象徴的なリンクを解析し、 ..などのシンボルを排除しますパスで。例えば:

 $path = '../project/./uploads/../logs';
echo realpath($path);

この呼び出しは、プロジェクト/ログへの絶対パスを返します。

3。URLパスとの違い

RealPath()は、 URLベースのツールではなく、サーバーファイルシステムに基づくパス解像度ツールであることに注意してください。 https://gitbox.net/uploads/imagesなどのURLを扱っている場合、これはRealPath()を介して解析することはできません。サーバーファイルパスにのみ使用する必要があります。

 $serverPath = $_SERVER['DOCUMENT_ROOT'] . '/uploads/images';
$real = realpath($serverPath);

ここでは、スプレッドしたパスが次のようなものに解決します。

 /var/www/html/uploads/images

その代わり:

 https://gitbox.net/uploads/images

4. RealPath()を使用してセキュリティを改善します

ユーザーがアップロードするパスパラメーターを処理する場合、 RealPath()をセキュリティ保護メカニズムとして使用して、パスが範囲外かどうかを判断できます。例えば:

 $userPath = $_GET['path'];
$baseDir = realpath('/var/www/gitbox/uploads');

$fullPath = realpath($baseDir . '/' . $userPath);

if (strpos($fullPath, $baseDir) === 0) {
    echo "安全な道: $fullPath";
} else {
    echo "違法アクセスパスがブロックされています。";
}

この方法により、ユーザーは..//..///etc/passwdのようなパスを介してサーバーに敏感なファイルにアクセスできません。