>  기사  >  백엔드 개발  >  PHP 쓰기 파일 권한 실패를 해결하는 방법 file_put_contents: 스트림을 열지 못했습니다: 권한이 거부되었습니다.

PHP 쓰기 파일 권한 실패를 해결하는 방법 file_put_contents: 스트림을 열지 못했습니다: 권한이 거부되었습니다.

步履不停
步履不停원래의
2019-06-06 14:13:2310834검색

PHP 쓰기 파일 권한 실패를 해결하는 방법 file_put_contents: 스트림을 열지 못했습니다: 권한이 거부되었습니다.

문제

로그 작성 방법에 file_put_contents 메소드가 사용됩니다. 현재 로그 작성을 위해 콜백 메소드를 실행하면 파일 쓰기 권한이 없다는 메시지가 표시되고

file_put_contents 오류 메시지가 나타납니다. 스트림 열기 실패: 권한 거부됨( PHP 비디오 튜토리얼)

해결 과정

로그 폴더의 권한을 확인하세요. 매일 생성되기 때문에 정기적으로 실행되는 예약된 작업이 있습니다. 사용자는 루트이므로 폴더를 생성하는 사용자와 사용자 그룹은 모두 루트이고, 콜백 방식의 실행 사용자는 www, 로그 쓰기 방식의

 if(!is_dir($dir)){
        mkdir($dir,0777,true);
    }

디렉터리가 없으면 디렉터리를 생성하되, PHP의 mkdir 기능으로 폴더를 생성하고 777 권한을 설정하면 실제로 생성된 파일에는 여전히 755 권한이 있습니다. Linux 시스템에서는 파일/폴더를 생성할 때 기본 권한이 있습니다. 이 권한은 /etc/bashrc 구성 파일에서 다음 구성을 찾을 수 있습니다.

if [ $UID -gt 99 ] && [ "`id -gn`" = "`id -un`" ]; then
        umask 002else
        umask 022fi

Linux의 기본 umask 시스템은 022인데, 이는 777& 연산 후에는 755가 되는 이유입니다. 여기 설정은 PHP 문제뿐만 아니라 Linux 시스템의 기본 권한 설정에 직접적인 영향을 미칩니다. 따라서 022를 000으로 변경하기 위해 직접 수정하는 것은 권장하지 않습니다.

최종 해결 방법

먼저 디렉터리를 만든 다음 chmod를 사용하여 권한을 777

mkdir('test', 0777);
chmod('test', 0777);
로 변경하세요.

위 내용은 PHP 쓰기 파일 권한 실패를 해결하는 방법 file_put_contents: 스트림을 열지 못했습니다: 권한이 거부되었습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.