PHP 개발에서는 파일 경로 문제, 특히 Symlinks와 관련하여 파일의 실제 경로를 얻는 것이 특히 중요해집니다. 이 기사는 IS_LINK () 및 RealPath () 함수를 결합하여 파일의 실제 경로를 정확하게 얻는 방법을 자세히 소개합니다.
IS_LINK () : 지정된 경로가 상징적 링크인지 결정합니다.
RealPath () : 지정된 경로의 절대 경로를 반환하고 모든 상징적 링크를 구문 분석합니다.
RealPath () 만 사용하면 파일의 실제 경로를 직접 얻을 수 있지만 경우에 따라 먼저 상징적 링크인지 결정한 다음 경로를 다루는 방법을 결정하려고합니다.
<?php
// 파일 경로가 있다고 가정합니다
$filePath = '/var/www/html/symlink-file';
// 먼저이 경로가 상징적 링크인지 확인하십시오
if (is_link($filePath)) {
// 그것이 상징적 링크라면,사용 readlink() 링크가 가리키는 경로를 가져옵니다
$linkTarget = readlink($filePath);
// 다시 사용하십시오 realpath() 링크 대상으로가는 실제 경로를 얻으십시오
$realPath = realpath($linkTarget);
} else {
// 그것이 상징적 링크가 아니라면,실제 길을 직접 얻으십시오
$realPath = realpath($filePath);
}
echo "파일의 실제 경로는입니다: " . $realPath;
?>
위 코드에서 :
IS_LINK ()를 사용하여 파일이 상징적 링크인지 확인하십시오.
상징적 링크 인 경우 먼저 readLink ()를 사용하여 기호 링크로가는 경로를 얻으십시오.
그런 다음 RealPath ()를 사용하여 상징적 링크 대상의 절대적인 진정한 경로를 얻으십시오.
상징적 인 링크가 아닌 경우 RealPath () 에게 직접 전화하여 실제 경로를 얻으십시오.
PHP 코드에서 원격 파일 주소를 처리 해야하는 경우 주소에 리디렉션 또는 기호 링크가 포함되면 작동하기 전에 경로를 구문 분석 할 수 있습니다.
샘플 코드 :
<?php
$url = 'http://m66.net/path/to/symlink';
// 먼저 분석하십시오 URL,경로 부분을 얻으십시오
$parsedUrl = parse_url($url);
$path = $parsedUrl['path'] ?? '';
// 여기서 동일한 경로가 국부적으로 존재한다고 가정합니다,판단하십시오
if (is_link($path)) {
$linkTarget = readlink($path);
$realPath = realpath($linkTarget);
} else {
$realPath = realpath($path);
}
echo "해당 파일의 진정한 경로는 다음과 같습니다: " . $realPath;
?>
위의 코드는 is_link () 와 realPath ()를 결합하여 URL에서 실제 경로 부분을 얻는 방법을 보여줍니다.
RealPath () 에 의해 반환 된 경로는 존재해야하며, 그렇지 않으면 False가 반환됩니다.
readlink ()는 상징적 링크에만 사용할 수 있으며 일반 파일을 처리 할 수 없습니다.
원격 URL의 경우 is_link () 및 realPath ()는 로컬 파일 시스템에 적용되지 않으며 사용해야합니다.
요약하면, is_link () 와 realPath () 를 결합하면 파일이 상징적 링크인지 더 정확하게 결정하고 경로 오류로 인한 잠재적 문제를 피하기 위해 실제 경로를 얻을 수 있습니다. 이는 파일 작동, 구성 관리 및 기타 시나리오에서 매우 실용적입니다.