Изменение пользователя/группы для разрешения PHP chmod/rename и move_upload_file()

Изменение пользователя/группы для разрешения PHP chmod/rename и move_upload_file()

Похоже, я ничего не могу сделать со своим PHP-скриптом на VPS.

Когда я пытаюсь загрузить что-либо в каталог, возвращается сообщение «Отказано в доступе».

Да, я изменил разрешение на 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

Владелец каталога — «пользователь [505]», а группа — «пользователь [508]» (как видно в WinSCP)

Что я могу сделать, чтобы изменить владельца и группу Apache Handler, чтобы мои PHP-скрипты могли работать?

ПС

Мой 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

Ему потребуются те же права, что и у пользователя, который запускает веб-сервер. Это будет зависеть от вашей ОС. Это может быть "apache" или "www-data" или что-то совсем другое.

Если вы не используетеsuEXEC, скрипт выполняется веб-сервером и, как таковой, работает с теми же разрешениями, что и у этого пользователя.

Таким образом, чтобы устранить проблему, вам необходимо определить, под каким пользователем запущен процесс Apache, и применить соответствующие разрешения к файлам/папкам, которые вы хотите, чтобы скрипт мог изменять.

Вы можете указать учетную запись пользователя и группы, под которой будет работать Apache, в вашем файле конфигурации, используя

User=[username]
Group=[groupname]

директивы.

Посмотрите в файле conf, опять же, имя и расположение файла будут различаться в зависимости от ОС. Предоставление здесь немного большей конкретики может помочь с более прямым ответом.

правка: для Centos файл conf находится в

/etc/httpd/conf/httpd.conf

решение2

ОБНОВЛЯТЬ!Если у вас тоже возникла эта проблема, попробуйте сделать следующее:

В WHM перейдите по ссылке:

Главная >> Конфигурация сервиса >> Конфигурация Apache >> Конфигурация PHP и SuExec

Я изменил Обработчик PHP 5кому: suphp.

Работал хорошо

решение3

изменение в WHM Main >> Service Configuration >> Apache Configuration >> PHP and SuExec Configuration php hadler >> fcgi, это решит проблему.

Связанный контент