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 服务。重新启动您的系统并继续您的工作。
我有一个简单的脚本可以在浏览器中输出 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 服务。重新启动您的系统并继续您的工作。