Похоже, я ничего не могу сделать со своим 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, это решит проблему.