2011-10-08 4 views
0

PHP 스크립트 (restore.php) :PHP의 CP 권한 문제

string(6) "apache" 
string(115) "cp: cannot create regular file `/var/www/html/227.png': Permission denied cp: cannot remove `/var/www/html/234.png' Permission denied " 

콘솔 :

cd /var/www/html 
sudo -u apache touch test.txt 
ls test.txt 
    -> test.txt 
sudo -u rm 234.png -f 
ls 234.png 
    -> ls: 234.png: No such file or directory 
sudo -u apache php restore.php 
ls 234.png 
    -> 234.png 
스크립트가 브라우저에서 액세스 할

var_dump(get_current_user()); 
var_dump(shell_exec(" cp /var/www/bkp/* /var/www/html 2>&1 ")); 

누구나 브라우저에서 실행할 때 왜 내 PHP 스크립트에서 권한 문제가 발생하는지 설명 할 수 있습니까?

+0

이 질문의 주제는 무엇입니까? – HyderA

답변

1

아파치가 apache 사용자로 실행되고 있습니까? get_current_user()은 스크립트의 소유자를 반환합니다. 당신은 아파치가 apache으로 실행되고 있다고 생각 하겠지만 어쩌면 그렇지 않을 수도 있습니다.

당신이 가진 프로세스 소유자의 이름을 얻을 수있는 경우 :/var/www /에서 소유자가 WWW 데이터 (아파치 웹 서버의 사용자)입니다

$processUser = posix_getpwuid(posix_geteuid()); 
print $processUser['name']; 
+0

네 말이 맞아. 나는 그 차이를 알지 못했다. 'daemon' 사용자로 실행됩니다. 다른 사용자로 실행되도록 변경하는 방법 ' – HyderA

+0

'/ etc/apache2/envvars'에서 APACHE_RUN_USER 및 APACHE_RUN_GROUP 설정을 원하는 사용자 및 그룹으로 편집 할 수 있습니다. – AndrewR

0

검사를, 그가 할 수있는 권한을 가지고 빨간색 & 작성하십시오.