Apache 或 PHP 问题?

Apache 或 PHP 问题?

这是我的问题。抱歉,如果之前有人讨论过这个主题,但我没有找到。另外,抱歉,如果我的问题不在这里。

我在使用 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

您的服务器可能需要644PHP 脚本的权限,假设它提供了Internal Server Error

相关内容