更改用户/组以允许 PHP chmod/rename 和 move_upload_file()

更改用户/组以允许 PHP chmod/rename 和 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

该目录的所有者是“用户 [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 中进行更改,它将解决问题。

相关内容