나는 최근에 같은 문제가 있었고이 질문에 비틀 거렸다. 불행히도 고삐 파이어 볼은 OP가 자신의 해결책을 찾은 의견에 불과하다고 말하면서 우리에게 도움이되지 못하는 대답을 받아 들였습니다. 검색 및 성공 후 file_put_contents이 다시 작동하게되면서 내 솔루션을 공유하기로 결정했습니다. 내 파일 및 디렉토리의
권한은 (당신의 디렉토리가이 위치에있는 파일을 작성하는 루트와 다른 보조금을 줄 것이다 chmod 757
있는지 확인) 어떤 글을 적용하기 위해 확인했다. 그것이 나를 위해하지 않은 것처럼 여전히 작동하지 않는다면 시스템이 아마도 SELinux (Security Enhanced Linux) 시스템이기 때문입니다.
setenforce 0
을 쓰려면 selinux를 허용 모드로 설정하고 스크립트를 다시 실행하십시오. 작동하면 문제가 잘 설명되어 있음을 의미합니다.
그런 경우 selinux를 setenforce 1
으로 돌리고 프로젝트 디렉토리가있는 디렉토리에 ls -Zl
을 입력하십시오.이 하나 하나의 디렉토리에서 컨텍스트를 전송하는 chcon
를 사용하는 경우이 당신에게
drwx---r-x. 9 root root system_u:object_r:httpd_sys_content_t:s0 4096 Dec 8 00:25 project
또는 다른 무언가하지만 httpd_sys_content_t
같은 라인을 제공 할 것입니다. httpd_sys_content_t
이 없다면 어쨌든 해당 디렉토리의 컨텍스트를 변경해야하기 때문에 괜찮습니다.
먼저 파일을 쓰려면 public_content_rw_t
컨텍스트를 수락해야합니다. 입력
setsebool -P httpd_anon_write on
이 (P) ermanently SELinux가 true로 부울 httpd_anon_write
자신의 위치에 파일을 쓸 수있는 권한이 있어야합니다 public_content_rw_t
로 불리는 어떤 컨텍스트를 설정합니다.
이제 프로젝트 디렉토리가 public_content_rw_t
인 SELinux를 말해야합니다. 그렇지 않으면 파일을 쓸 수 없습니다. 유형 :
semanage fcontext --add --type public_content_rw_t "/project(/.*)?"
및 restorecon -RvF /project
위의 사양을 적용 SELinux가 말할 수 있습니다.
이제 디렉토리가 public_content_rw_t이고 파일을 쓸 수 있어야합니다. 나도이 문제로 실행
cd /mydir/
setsebool -P allow_httpd_anon_write true
안부
아파치 사용자는 디렉토리 권한이 있어야합니다 - 명령 행에서 아파치 사용자로 스크립트를 실행하려고 시도하는지 확인하십시오. 작동하지 않는지 확인하십시오. – user1914292
아파치 오류 로그를 확인하면 실패한 부분에 대한 세부 정보를 얻을 수 있습니다. –
$ myString 값은 무엇입니까? 그 맞습니까 ? – Cooper