PHP가 chmod/이름 바꾸기 및 move_upload_file()을 허용하도록 사용자/그룹 변경

PHP가 chmod/이름 바꾸기 및 move_upload_file()을 허용하도록 사용자/그룹 변경

내 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를 변경하면 문제가 해결됩니다..

관련 정보