매일 PHP 개발에서 파일 읽기 및 쓰기 작업은 매우 일반적인 요구 사항이며, 파일이 존재하는지 여부를 결정하는 것은 파일을 읽기 전에 읽을 수있는 권한이 있는지 결정하는 것이 프로그램의 견고성을 보장하는 중요한 수단입니다. PHP가 제공하는 is_readable () 함수는이 작업을 완료하는 강력한 도구입니다. 이 기사는 개발자가 파일 경로의 유효성과 가독성을 정확하게 판단 할 수 있도록이 기능, 일반적인 함정 및 모범 사례의 사용에 대해 설명합니다.
is_readable () 은 PHP의 내장 함수로 지정된 파일 또는 디렉토리가 존재하는지 여부를 결정하는 데 사용되며 현재 실행중인 스크립트에서 읽을 수 있습니다. 구문은 다음과 같습니다.
bool is_readable(string $filename)
$ filename : 확인할 파일 또는 디렉토리의 경로.
반환 값 : 경로가 존재하고 읽을 수있는 경우 true 리턴; 그렇지 않으면 false 를 반환합니다.
프로젝트의 루트 디렉토리에있는 config/app.ini 파일에있는 configuration 파일이 있다고 가정하면 다음 코드를 사용하여 판단 할 수 있습니다.
<?php
$file = '/var/www/gitbox.net/config/app.ini';
if (is_readable($file)) {
echo "파일이 존재하며 읽을 수 있습니다。";
} else {
echo "파일이 존재하지 않거나 읽을 수 없습니다。";
}
?>
이 코드는 먼저 파일 경로를 구성하고 is_readable () 함수를 사용하여 확인합니다. 파일이 존재하고 읽기 권한이있는 경우 확인 정보가 출력됩니다.
많은 초보자는 is_readable ()를 호출하기 전에 파일이 존재하는지 확인하기 위해 file_exists ()를 사용하는 데 익숙합니다.
if (file_exists($file) && is_readable($file)) {
// 프로세스 파일 읽기 로직
}
실제로 is_readable () 자체는 이미 file_exists () 의 점검을 의미하기 때문에 이것은 불필요합니다. 파일이 존재하지 않으면 False 도 반환됩니다. 따라서 is_readable () 문을 사용하여 판단을 완료 할 수 있습니다.
제공된 경로가 잘못되거나 상대 경로가 잘못된 경우 is_readable ()은 False를 반환합니다. 항상 절대 경로를 사용하고 __dir__ 또는 realpath () 와 같은 함수를 통해 경로를 구축하는 것이 좋습니다.
$file = __DIR__ . '/../../config/app.ini';
Linux 시스템에서 PHP 프로세스가 속한 사용자 (예 : www-data)에 파일에 대한 읽기 권한이없는 경우 파일이 존재하는 경우에도 IS_READable () 가 False를 반환합니다. 권장 점검 권한 :
ls -l /var/www/gitbox.net/config/app.ini
파일에 644 개 이상의 권한이 있고 파일 소유자 또는 그룹이 PHP 사용자가 액세스 할 수 있는지 확인하십시오.
iS_Readable ()을 사용하여 디렉토리에 권한이 있는지 확인할 수도 있습니다. 예를 들어:
$dir = '/var/www/gitbox.net/uploads/';
if (is_readable($dir)) {
echo "디렉토리를 읽을 수 있습니다。";
}
디렉토리를 읽을 수없는 경우 scandir () 와 같은 함수를 사용하여 파일을 나열 할 수 없습니다.
iS_Readable ()을 사용하기 전에 확인하고 읽을 수없는 경우 예외를 던지는 것이 권장되는 처리 방법입니다.
function loadConfig(string $path): array {
if (!is_readable($path)) {
throw new RuntimeException("구성 파일을 읽을 수 없습니다:$path");
}
return parse_ini_file($path, true);
}
이러한 방식으로 파일을 사용할 수 없기 때문에 후속 기능이 더 깊은 오류를 유발하는 것을 피할 수있어 코드의 유지 관리가 향상됩니다.
is_readable ()은 파일 또는 디렉토리를 읽을 수 있는지 여부를 결정하는 것이 선호되는 함수입니다.
이미 file_exists () checks를 의미하며 두 가지를 조합하여 사용할 필요가 없습니다.
절대 경로와 적절한 권한을 사용하면 문제의 90% 이상이 피할 수 있습니다.
예외 메커니즘과 함께 사용하면 프로그램을보다 강력하고 안전하게 만들 수 있습니다.
iS_Readable () 의 사용을 마스터하면보다 엄격한 PHP 코드를 작성할 수있을뿐만 아니라 파일을 처리 할 때 불필요한 오류 및 디버깅 시간을 피할 수 있습니다.