我来这里的原因是我的服务器出现了非常奇怪的行为,并且我花了几个小时调查 AH00035 错误。
在我的服务器上,如果我创建一个简单的 php 文件索引.php
<? php echo "Hello world" ?>
我可以够到它。
当我使用通过 sftp 上传的完全相同的文件时,我收到 AH00035 错误。但是当我复制文件并应用与之前完全相同的权限和用户组时,我不再遇到该错误。
场景如下:
1-使用 sftp 上传文件
2 - 检查文件的权限
-rw-r--r--. 1 SFTP_JOR_USER sftp_users index.php
3-将文件移动到我的 html 目录
4 - 尝试访问文件:AH00035
5 - 更改用户
chown apache:apache index.php
6 - 尝试访问文件:AH00035
奇怪的是
7 - 复制文件
cp index.php index2.php
8 - 检查权限
-rw-r--r--. 1 root root index2.php
9-访问index2.php:你好世界(好的 !)
10 – 尝试在根目录下创建 index.php
chown root:root index.php
11 – 尝试访问 index.php : AH00035
12 - 更改 index.php 和 index2.php 用户
chown apache:apache index.php
chown apache:apache index2.php
因此,最后,我得到了完全相同的文件,具有完全相同的内容和完全相同的权限。
一个导致 AH00035 错误。另一个可以访问。
我真的不明白这里发生了什么。是因为通过 sftp 上传它们吗?
我真的不想每次在开发过程中进行更改时都复制我的文件,然后重命名它们,然后更改用户组。
提前致谢
答案1
你已移动将原始文件从主目录复制到 Web 目录,而不是复制因此该文件的 SELinux 上下文是错误的。移动文件时,默认情况下会保留其 SELinux 上下文。
您可以通过以下任一方式解决此问题:
- 复制将文件从主目录移至 Web 目录(然后根据需要删除原始文件)。新文件将具有不同的 SELinux 上下文。
- 移动文件以
mv -Z
将 SELinux 上下文重置为目标的默认值。 - 使用 SFTP 将文件直接上传到其目标目录而不是您的主目录。