1

在 centos 6.4 上运行 apache 并且我的 Web 服务器看不到任何文件,除非 root 用户创建或复制它们。

ps aux | grep apache表明 apache 以 apache 用户而不是 root 用户身份运行。我试过chown apache:apache文件。我什至设置chmod 777了文件。

-rwxrwxrwx. 1 apache apache 2300 May 15 17:46 example.php

我仍然收到 http 500 错误,还有什么问题?

同样,即使我将文件 chown 到 root:root,它也不会工作,我实际上需要以cp file.php file.phproot 身份才能工作。我不明白!

chcon -t httpd_sys_content_t example.php把我带到那里!- 谢谢克里斯。这是否意味着我需要更改我的 FTP 用户的安全上下文设置,以便他们可以上传这样的文件,或者我是否需要更改 SELinux 中的规则以允许执行更广泛的文件?

4

2 回答 2

1

SELinux 在这里可能是个问题。

请做ls -lZ example.php

要排除 SELinux,您可以:

getenforce

然后

setenforce 0

并尝试再次访问此文件...

这将暂时将 SELinux 置于许可模式。您可能必须更改文件的上下文!让我们知道它是怎么回事,我们将从那里开始。

更新:

正如预期的那样,SELinux 正在阻止 apache 访问该文件。如果你信任这个文件,你可以改变它的上下文:

chcon -v --type=httpd_sys_content_t example.php

如果有多个文件,则可以使用-Rflag,因此:

chcon -vR --type=httpd_sys_content_t /html/

正如您所注意到的,ls您可以使用-Z标志来显示 SELlinux 上下文。您可以尝试将此标志与其他程序一起使用ps,例如。

为了解决我推荐的 SELinux 问题sealert- 部分setroubleshoot-server.

我怎么知道您最有可能使用 SELinux?您的文件系统已标记。我怎么知道你的fs被贴上了标签?-rwxrwxrwx**.**- 权限末尾的点表示 fs 已标记。

不要忘记更改权限!你真的不想要777......希望有帮助。

于 2013-05-16T08:10:16.453 回答
-2

如果您启用了 suphp 那么具有 777 权限的文件将无法正常工作并给出 500 错误,请更改权限 644。

如果您仍然面临同样的问题,请检查相同的错误日志。

为什么要尝试使用相同名称的“cp file.php file.php”,复制使用下面的其他名称或复制到 file.php 不存在的另一个位置。

cp file.php file.php-bak

或者

cp file.php 另一个目录/file.php

于 2013-05-16T02:01:57.233 回答