PHP rename() 权限被 Apache 拒绝(与 SELinux 相关)

PHP rename() permission denied via Apache (SELinux related)

我有一个简单的脚本可以在浏览器中输出 Permission denied 警告:

rename('/opt/web/test.tmp', '/opt/web/test.tmp1')

脚本路径是/opt/web/test_rename.php

/opt//opt/web//opt/web/test_rename.php 是 777,拥有 apache 个所有者/组。

httpd 进程所有者是 apache

test.tmp 是 777,并且还有 apache 所有者

它在 cli 上运行良好。

我还能做些什么来让它通过 apache 工作?

问题出在 SELinux 上。它可以阻止 php rename 函数。

我在这里找到了答案:http://forums.fedoraforum.org/archive/index.php/t-111081.html

在 Fedora Core 3 Linux 发行版中,您可能会收到 "failed to open stream: Permission denied in ..." 消息。实际上更改目录的权限是行不通的(即使你设置为0777)。

这是因为新的 SELinux 内核允许 apache 用户只能在 /tmp 目录中写入(我认为)。为了解决这个问题,您必须禁用 SELinux(至少对于 apache 服务)以允许服务器写入其他目录。为此,运行 system-config-securitylevel 应用程序并禁用 SE to apache 服务。重新启动您的系统并继续您的工作。