PHP chmod 함수 사용 시 파일 권한 설정 오류 해결 방법
페이지 정보

본문
문제 증상
PHP의 chmod() 함수를 사용하여 파일이나 디렉토리의 권한을 변경할 때, intval($mode, 8) 방식을 사용하면 의도한 권한 값이 아닌 잘못된 권한이 적용되는 문제가 발생할 수 있습니다. 이는 문자열로 된 모드 값이 정수 변환 과정에서 정확한 8진수 모드로 처리되지 않기 때문입니다.
해결 방법
문자열 형태의 권한 모드(예: '0644')를 8진수로 정확하게 변환하려면 intval() 대신 octdec() 함수를 사용해야 합니다. octdec() 함수는 8진수 문자열을 10진수 정수로 변환하여 chmod() 함수가 올바른 권한을 적용할 수 있도록 돕습니다.
코드 적용 예시
다음은 octdec() 함수를 사용하여 .htaccess 파일의 권한을 안전하게 설정하는 예시입니다.
$mode = '0644';
$file = 'data/.htaccess';
if (file_exists($file)) {
chmod($file, octdec($mode));
}적용 후 점검
코드를 적용한 후에는 서버의 터미널에서 ls -l 명령어를 입력하거나 FTP 클라이언트의 파일 속성 창을 통해 해당 파일의 권한이 의도한 값(예: 644)으로 정확히 변경되었는지 확인하십시오.
복구 방법
설정 변경 전 기존 파일 권한을 기록해 두거나, 문제가 발생할 경우 chmod() 함수를 사용하여 권한을 이전 상태로 수동 복구하십시오. 권한 복구 시에도 동일하게 octdec() 함수를 사용하는 것이 안전합니다.
- 이전글웹호스팅 환경에서 POST 데이터 전송 시 변수 누락 해결하기 26.09.12
- 다음글PHP 7.2 이상 버전에서 each() 함수 오류 해결 및 foreach 대체 방법 26.09.12
댓글목록
등록된 댓글이 없습니다.