php - 使用php写入属于不同用户的目录中的文件

标签 php linux file-permissions

我有一台托管多个域的服务器。 从其中一个域,使用 php 脚本,我希望能够将几行附加到其他域的 .htaccess。

例如,从 masterdomain.com 我想将一些行附加到 otherdomain.com 的 .htaccess。因此,从/home/masterdomain/www/中的 php 文件,我想将几​​行附加到位于/home/otherdomain/www 的 .htaccess。

为此,我编写了一个 shell 脚本,当我以 root 身份运行 shell 脚本时,它可以工作,但是当通过 php 运行时,exec('./write_htaccess.sh') 它不是工作,什么也没发生。我检查了一下,没有返回任何错误。

我已经在 write_htaccess.sh 上尝试了 chmod u+s 以尝试让它每次都以 root 身份运行,但这也没有用,虽然我可能错误地设置了 s 位。

我怎样才能做到这一点?我是否必须授予 php 根权限,最好的方法是什么?

最佳答案

PHP 可能由您的网络服务器运行的任何用户运行;我猜你说的服务器是指网络服务器。在作为 apache 的 Red Hat 或 Fedora 上(除非您使用不同的网络服务器),其他类型的 linux 可能使用 www 或其他用户。当您从 PHP 运行 shell 脚本时,它由用户 apache 执行。该用户需要对 .htaccess 文件的写入权限,或者需要属于对 .htaccess 文件具有写入权限的组。

尝试将 .htaccess 文件的组所有权更改为 apache(或其他)并使其组可写。这避免了使用 sudo 或 setuid 位。当然,这意味着该组中的任何人都可以修改 .htaccess 文件。

关于php - 使用php写入属于不同用户的目录中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3889743/

相关文章:

sockets - 如何安全设置Unix域套接字的组所有权?

php - 下载文件添加尾随空行

linux - 无法在ansible yml脚本中执行 block 模块

linux - 在 Linux 上确定库的次要版本

linux - EC2 卷适用于哪个 linux 设备?

java - websphere 的 OS 用户创建文件夹和写入文件需要什么 Linux 权限?

linux - 设置创建包含网站的文件夹的权限

php - 如何在 Codeigniter 函数中对学生分数进行排名

php - Google 日历 API 存储代码或访问 token

php - 从日期范围查找可用房间