PHP의 is_writable() 함수는 지정한 파일이 쓰기 가능한 상태인지 확인하는 데 사용됩니다. 파일이 실제로 존재하고 쓰기 권한이 있을 경우 TRUE를 반환하며, 그렇지 않으면 FALSE를 반환합니다.
이 함수는 파일 업로드 처리나 로그 기록 등 쓰기 작업 전에 권한을 미리 검증해야 할 때 유용하게 활용됩니다.
문법(Syntax)
is_writable(file_path)
매개변수(Parameters)
file_path − 쓰기 가능 여부를 확인할 파일의 경로를 나타냅니다. 이 매개변수는 필수입니다.
반환 값(Return)
파일이 존재하고 쓰기 가능한 경우 TRUE를 반환하고, 그 외의 경우 FALSE를 반환합니다.
예제 1 – 기본 사용법
<?php
$file = "one.txt";
if(is_writable($file)) {
echo ("파일이 쓰기 가능합니다!");
} else {
echo ("파일이 쓰기 가능하지 않습니다!");
}
?>출력 결과
File is not writeable!
위 예제에서는 one.txt 파일에 쓰기 권한이 없기 때문에 FALSE가 반환되어 '쓰기 불가' 메시지가 출력됩니다.
이번에는 파일 권한 정보를 함께 확인하는 또 다른 예제를 살펴보겠습니다.
예제 2 – 파일 권한과 함께 확인하기
<?php
$file_permissions = fileperms("two.txt");
$res = sprintf("%o", $file_permissions);
$file = "two.txt";
if(is_writable($file)) {
echo ("파일이 쓰기 가능합니다!");
echo ("권한 = $res");
} else {
echo ("파일이 쓰기 가능하지 않습니다!");
echo ("권한 = $res");
}
?>출력 결과
File is writeable! Permission: 0777
이 예제에서는 fileperms() 함수를 사용해 two.txt 파일의 권한 값을 가져온 뒤, sprintf()로 8진수 형태로 변환하여 출력했습니다. 권한이 0777이므로 모든 사용자에게 읽기·쓰기·실행 권한이 있어 쓰기 가능 판정을 받은 것입니다.
참고 사항
- is_writable() 함수의 결과는 서버 환경과 운영체제에 따라 달라질 수 있으므로, 중요한 로직에서는 실제 쓰기 테스트와 함께 사용하는 것이 좋습니다.
- PHP 5.1.0부터는 보안과 관련된 안전 모드(safe mode) 체크도 함께 수행되었습니다.