아파치 웹 서버에서 실행할 때 PHP가 파일 시스템에 파일을 쓸 수 없도록합니다. 나는 사용자 ec2-user:ec2-user
로 로그인하고있어 단지 아파치를 테스트하기위한 ec2-user:ec2-user
로 실행아파치에서 실행중인 PHP는 파일 시스템에 쓸 수 없습니다.
<?php
print 'User : '.posix_getpwuid(posix_getuid())['name'];
print ' ';
print 'Group: '.posix_getgrgid(posix_getgid())['name'];
file_put_contents('./test.txt', 'OK');
?>
:
나는 간단한 PHP 스크립트가 있습니다.ec2-user
는 다음과 같은 그룹에 속하는 :
>groups
ec2-user adm wheel systemd-journal www
스크립트가 아파치 문서 루트에 있습니다.
/var/www/html/test.php
drwxr-xr-x. 21 root root 4096 ene 31 05:45 var
drwxrwsr-x. 4 root www 31 ene 29 17:30 www
drwxrwsr-x. 2 root www 36 ene 31 06:16 html
-rw-rw-r--. 1 ec2-user www 172 ene 31 06:15 test.php
실행 스크립트 마주 PHP는 test.txt
가 생성 된 파일을 CLI 및 다음과 같은 출력이 생성됩니다. 나는 일반 웹 페이지 또는 컬를 통해 웹 브라우저로 스크립트를 호출하는 경우
>php ./test.php
User : ec2-user Group: ec2-user
는하지만, 내가 파일 사용 권한 오류 얻을 : 나는 ec2-user:www
아파치를 실행하는 데에도 노력했다
> curl http://my.ip/test.php
User : ec2-user Group: ec2-user<br />
<b>Warning</b>: file_put_contents(./test.txt): failed to open stream: Permission denied in <b>/var/www/html/test.php</b> on line <b>5</b><br />
을하지만, 출력은 동일합니다 : 나는 PHP 구성을 확인하고 구성에는 open_basedir
옵션이없는
User : ec2-user Group: www
Warning: file_put_contents(./test.txt): failed to open stream: Permission denied in /var/www/html/test.php on line 6
.
777
권한과 동일한 출력으로 /dummy
폴더에 쓰려고했습니다.
누락 된 구성이 있습니까? 활성화 된 경우
나는 해결책이 없다 해제하려고하지만 당신은 내가 가정하고 AWS에, 그래서'추가하는 것을 잊지 마세요 aws' 태그를 추가하십시오. 그것과 어떻게 든 관련이 있습니다. – Jigar
http://serverfault.com/questions/293143/php-fopen-always-fails-with-permission-denied – Sumurai8