看起来我无法使用我的 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
该目录的所有者是“用户 [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
它需要与运行 Web 服务器的用户相同的权限。这将取决于您的操作系统。它可能是“apache”或“www-data”,也可能是其他完全不同的名称。
除非你使用执行指令,该脚本由网络服务器执行,因此以与该用户相同的权限运行。
因此,要解决这个问题,您需要确定 apache 进程在哪个用户下运行,并对您希望脚本能够修改的文件/文件夹应用适当的权限。
您可以使用以下命令在 conf 文件中指定 apache 运行的用户和组帐户
User=[username]
Group=[groupname]
指令。
查看您的 conf 文件,文件的名称和位置会因操作系统而异。在这里提供更多细节可能会帮助您获得更直接的答案。
编辑:对于 Centos,conf 文件位于
/etc/httpd/conf/httpd.conf
答案2
更新!如果你也遇到这个问题,请尝试以下方法:
在 WHM 中转到:
主页 >> 服务配置 >> Apache 配置 >> PHP 和 SuExec 配置
我变了 PHP 5 处理程序至:suphp。
效果很好
答案3
在 WHM Main >> 服务配置 >> Apache 配置 >> PHP 和 SuExec 配置 php hadler >> fcgi 中进行更改,它将解决问题。