![Apache 或 PHP 问题?](https://linux22.com/image/517394/Apache%20%E6%88%96%20PHP%20%E9%97%AE%E9%A2%98%EF%BC%9F.png)
这是我的问题。抱歉,如果之前有人讨论过这个主题,但我没有找到。另外,抱歉,如果我的问题不在这里。
我在使用 Apache 2.04 和 PHP 5 的服务器上有一个网站。在网站导航期间,脚本会创建一个具有 755 权限和 apache:apache 所有者的 .xml 文件。问题是,无法从 .swf 文件或从其他浏览器窗口访问此文件 - 尝试通过键入其绝对路径直接访问它。
我发现将所有者更改为 root:root 后,.xml 文件在两种情况下都可以访问。尝试使用 PHP 函数更改所有者或权限,但没有发生任何变化。
请帮助我,告诉我该怎么做才能解决这个问题。这是一个 PHP 配置吗?
先感谢您。
答案1
这不是 php 配置问题或者 apache 问题。只是一个编程陷阱。
使用 PHP 上传或创建新文件时,它始终使用默认的“umask”。如果您没有提供文件的正确 umask 或 CHMOD,其他应用程序甚至 Apache 都可能无法访问它。(因为它是由您的代码生成的)
这是 umask 和 chmod 的链接。
http://php.net/manual/en/function.umask.php
http://www.php.net/manual/en/function.chmod.php
尝试使用 php 代码解决问题。例如:上传或创建新文件后,更改文件的 chmod。
chmod(“/somedir/somefile”,0644);
这种方式更好、更高效、更兼容。
答案2
也许 xml 文件的完整路径中的目录对 apache 用户来说是不可读的。
检查xml路径文件每个目录的权限,可以尝试读取目录内容:
sudo -u apache ls -l /GRAPHICS/
sudo -u apache ls -l /GRAPHICS/video/
sudo -u apache ls -l /GRAPHICS/video/files/
也许您应该将 apache 用户添加到适当的组,但这取决于您对此目录的用户权限。
答案3
您的服务器可能需要644
PHP 脚本的权限,假设它提供了Internal Server Error