현재 위치: > 최신 기사 목록> PHP RealPath를 사용하여 폴더로의 절대 경로를 얻으십시오.

PHP RealPath를 사용하여 폴더로의 절대 경로를 얻으십시오.

gitbox 2025-06-07

RealPath () 함수 소개

RealPath () 함수의 기본 구문은 다음과 같습니다.

 string realpath(string $path)
  • $ 경로 : 구문 분석 경로.

  • 반환 값 : 성공하면 정규화 된 절대 경로를 반환합니다. 실패하면 거짓을 반환합니다.

사용의 예

다음은 현재 디렉토리에서 폴더로의 절대 경로를 얻는 기본 예입니다.

 $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 와 같은 경로를 통해 서버에 민감한 파일에 액세스하지 못하게합니다.