php에서 get_include_path () 및 is_readable () 은 파일 포함 및 액세스 권한 판단을 다룰 때 특히 중요합니다. 이 기사에서는이 두 기능을 조합하여 사용하는 방법을 설명하여 includ_path 에 의해 지정된 경로에 파일이 존재하고 읽을 수있는 권한이 있는지 여부를 결정합니다.
get_include_path ()는 현재 포함 경로 (포함)를 반환하는 내장 함수입니다. 포함 경로는 포함 된 파일 (예 : 포함 또는 요구 사항 )을 찾을 때 PHP에서 사용하는 디렉토리 세트입니다. 이 기능을 사용하여 파일이 디렉토리에 있는지 여부를 수동으로 확인하는 경로를 얻을 수 있습니다.
$includePath = get_include_path();
echo $includePath;
반환 값은 일반적으로 여러 경로로 구성된 문자열이며, 경로는 운영 체제 관련 경로 분리기 (예 : 콜론 ":"Unix/Linux 및 Semicolon 아래에 ";"Windows에서)로 연결됩니다.
is_readable ()은 파일이 존재하는지 여부를 결정하는 데 사용됩니다. 부울 값을 반환하고, True는 파일이 존재하고 읽을 수 있음을 의미하며, False는 파일에 액세스 할 수 없거나 존재하지 않는다는 것을 의미합니다.
if (is_readable('/path/to/file.php')) {
echo "파일을 읽을 수 있습니다";
} else {
echo "파일을 읽을 수 없습니다";
}
때때로 우리는 파일의 정확한 위치를 알지 못하며 include_path 로 지정된 디렉토리에만 존재할 수 있다는 것을 알고 있습니다. 이 시점에서 get_include_path () 및 is_readable ()을 사용하여 파일이 존재 하고이 디렉토리에서 읽을 수 있는지 확인할 수 있습니다.
다음은 현재 포함 _path 에서 파일 이름을 읽을 수 있는지 확인하는 예제 기능입니다.
function isFileReadableInIncludePath($filename) {
$paths = explode(PATH_SEPARATOR, get_include_path());
foreach ($paths as $path) {
$fullPath = rtrim($path, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . $filename;
if (is_readable($fullPath)) {
return $fullPath; // 읽을 수있는 파일의 전체 경로를 반환합니다
}
}
return false; // 모든 경로에는 읽을 수있는 파일이 없습니다
}
사용의 예 :
$file = 'config.php';
$result = isFileReadableInIncludePath($file);
if ($result !== false) {
echo "파일을 읽을 수 있습니다,길은입니다:$result";
include $result;
} else {
echo "파일이 있습니다 include_path 읽을 수 없거나 존재하지 않습니다";
}
큰 응용 프로그램을 개발 중이며 구성 파일이 여러 경로 중 하나에 위치 할 수 있다고 가정합니다.
/usr/local/lib/myapp/
/home/user/myApp/contact/
현재 작업 디렉토리
PHP의 include_path 에 이러한 경로를 추가 할 수 있습니다.
set_include_path(
get_include_path() . PATH_SEPARATOR .
'/usr/local/lib/myapp/' . PATH_SEPARATOR .
'/home/user/myapp/includes/'
);
그런 다음 위의 함수를 사용하여 파일이 존재하지 않거나 권한이없는 파일에 대해 걱정하지 않고 구성 파일을 안전하게 포함시킵니다.
$configFile = isFileReadableInIncludePath('config.php');
if ($configFile) {
include $configFile;
} else {
die('구성 파일에 액세스 할 수 없습니다');
}
is_readable ()는 PHP의 Open_Basedir 제한과 관련된 운영 체제 수준에서 가독성을 확인합니다. 구성이 PHP가 관련 디렉토리에 액세스하는 것을 방해하지 않도록하십시오.
사용자가 입력 한 파일 이름을 사용하는 경우 디렉토리 트래버스와 같은 보안 취약점을 방지하기 위해 항상 확인을 수행해야합니다.
프로젝트에서 자동 로딩 메커니즘 (예 : 작곡가)을 사용하는 경우이 방법은 더 이상 필요하지 않을 수 있으며 프로젝트의 실제 요구에 따라 사용할 필요가 있습니다.
get_include_path () 와 is_readable () 의 조합을 사용하면 파일이 포함 된 경로에 존재하는지 여부를 결정할 수 있으며 파일의 전체 경로를 명확히하지 않고 읽을 수 있습니다. 이것은 특히 모듈 식 디자인 또는 다중 경로 배포 시나리오에서 실용적입니다. 이러한 기능을 합리적으로 사용하면 코드의 견고성과 유지 관리가 향상 될 수 있습니다.