我有一台托管多个域的服务器。 从其中一个域,使用 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/