2015-01-31 2 views
2

아파치 웹 서버에서 실행할 때 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 폴더에 쓰려고했습니다.

누락 된 구성이 있습니까? 활성화 된 경우

+1

나는 해결책이 없다 해제하려고하지만 당신은 내가 가정하고 AWS에, 그래서'추가하는 것을 잊지 마세요 aws' 태그를 추가하십시오. 그것과 어떻게 든 관련이 있습니다. – Jigar

+1

http://serverfault.com/questions/293143/php-fopen-always-fails-with-permission-denied – Sumurai8

답변

2

체크 SELinux를가

selinuxenabled && echo enabled || echo disabled 

을 활성화,

echo 0 > /selinux/enforce 
+0

그게 전부입니다. 감사. 'getenforce'로 SeLinux 상태를 확인할 수도 있습니다. 나는'/ etc/selinux/config'에서'SELINUX = disabled'를 수정하고 재부팅하는 것을 막았습니다. https://apcess.com/redhat.com/documentation/ –

관련 문제