%EC%9D%84%20%ED%97%88%EC%9A%A9%ED%95%98%EB%8F%84%EB%A1%9D%20%EC%82%AC%EC%9A%A9%EC%9E%90%2F%EA%B7%B8%EB%A3%B9%20%EB%B3%80%EA%B2%BD%20.png)
내 VPS에서 PHP 스크립트로 아무것도 할 수 없는 것 같습니다.
디렉토리에 무언가를 업로드하려고 하면 '권한 거부됨'이 반환됩니다.
네, 권한을 777로 변경했는데 작동은 되지만 불안한 점이 마음에 들지 않습니다
명령을 실행할 때:
ps axu|grep apache|grep -v grep
그것은 반환
nobody 7689 0.1 3.8 50604 20036 ? S 21:38 0:00 /usr/local/apache/bin/httpd -k start -DSSL
root 13600 0.0 3.8 50304 20348 ? Ss Jun06 0:46 /usr/local/apache/bin/httpd -k start -DSSL
nobody 15733 0.1 3.8 50700 20156 ? S 21:39 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 15818 0.1 3.8 51492 20180 ? S 21:39 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 23843 0.1 3.7 51336 19592 ? S 21:40 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 30335 0.0 3.5 50436 18496 ? S 21:41 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 30406 0.0 3.5 50444 18544 ? S 21:41 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 30407 0.0 3.5 50556 18696 ? S 21:41 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 30472 0.0 3.6 50828 19348 ? S 21:41 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 30474 0.0 3.5 50668 18868 ? S 21:41 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 30476 0.0 3.6 50532 19064 ? S 21:41 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 30501 0.0 3.8 50556 20080 ? S 21:36 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32341 0.0 3.5 50444 18492 ? S 21:41 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32370 0.0 3.5 50444 18476 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32414 0.1 3.7 51336 19524 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32416 0.1 3.5 50668 18816 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32457 0.1 3.6 50828 19320 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32458 0.1 3.6 50772 19276 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32459 0.0 3.5 50444 18504 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32460 0.2 3.6 50828 19320 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32463 0.0 3.5 50444 18472 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32466 0.0 3.4 50436 17960 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
디렉터리의 소유자는 'user [505]'이고 그룹은 'user[508]'입니다(WinSCP에서 볼 수 있음).
PHP 스크립트가 작동할 수 있도록 Apache 핸들러를 올바른 소유자 및 그룹으로 변경하려면 어떻게 해야 합니까?
추신
내 PHP는 안전 모드로 설정되어 있지 않으며 open_basedir은 다음으로 설정되어 있습니다.가치 없음
편집하다:
이것이 내 httpd.conf의 모습입니다(연관 도메인의 경우).
<VirtualHost *:80>
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot /home/domain/public_html
ServerAdmin info@domain
## User <theUsername> # Needed for Cpanel::ApacheConf
<IfModule mod_userdir.c>
Userdir disabled
Userdir enabled <userName>
</IfModule>
<IfModule mod_suphp.c>
suPHP_UserGroup <userName> <userName>
</IfModule>
<IfModule !mod_disable_suexec.c>
SuexecUserGroup <userName> <userName>
</IfModule>
CustomLog /usr/local/apache/domlogs/domain.com-bytes_log "%{%s}t %I .\n%{%s}t %O ."
CustomLog /usr/local/apache/domlogs/domain.com combined
ScriptAlias /cgi-bin/ /home/domain/public_html/cgi-bin/
#Options -ExecCGI -Includes
#RemoveHandler cgi-script .cgi .pl .plx .ppl .perl
답변1
웹 서버를 실행하는 사용자와 동일한 권한이 필요합니다. 이는 OS에 따라 다릅니다. "apache" 또는 "www-data" 또는 완전히 다른 것일 수 있습니다.
사용하지 않는 이상suEXEC, 스크립트는 웹 서버에 의해 실행되므로 해당 사용자와 동일한 권한으로 실행됩니다.
따라서 문제를 해결하려면 Apache 프로세스가 실행 중인 사용자를 식별하고 스크립트가 수정할 수 있도록 하려는 파일/폴더에 적절한 권한을 적용해야 합니다.
다음을 사용하여 conf 파일에서 Apache가 실행되는 사용자 및 그룹 계정을 지정할 수 있습니다.
User=[username]
Group=[groupname]
지시문.
conf 파일을 살펴보세요. 파일의 이름과 위치는 OS에 따라 다릅니다. 여기에 좀 더 구체적인 내용을 제공하면 보다 직접적인 답변을 얻는 데 도움이 될 수 있습니다.
편집: Centos의 경우 conf 파일은 다음 위치에 있습니다.
/etc/httpd/conf/httpd.conf
답변2
업데이트!이 문제가 발생하는 경우 다음을 시도해 보십시오.
WHM에서 다음으로 이동하세요.
메인 >> 서비스 구성 >> Apache 구성 >> PHP 및 SuExec 구성
나는 변했다 PHP 5 핸들러받는 사람: suphp.
대접을 받았습니다
답변3
WHM 메인 >> 서비스 구성 >> Apache 구성 >> PHP 및 SuExec 구성 php hadler >> fcgi를 변경하면 문제가 해결됩니다..