我知道,这是一个非常古老的问题完成的名字,但我想有一些深入的加入很好的解决方案说明。你将不得不在系统上执行两个Ubuntu语句,然后它就像一个魅力一样。
Linux中的权限可以用三位数表示。第一个数字定义了文件所有者的权限。第二位数字是特定用户组的权限。第三位数字定义了不是该组所有者或所有组成员的所有用户的权限。
网络服务器应该使用作为该组成员的ID执行。 Web服务器不应该使用与文件和目录的所有者相同的ID运行。在Ubuntu下运行Apache下的ID数据。该ID应该是指定权限的组的成员。
为了让在您要更改文件的内容适当的权限,执行语句的目录:
find %DIR% -type d -exec chmod 770 {} \;
。那将意味着在OP的问题,对于目录%的权限ROOT%/数据库应该相应地更改。因此,重要的是不要在该目录内具有永远不应该被更改或删除的文件。因此,为内容必须更改的文件创建单独的目录是最佳实践。
读取目录的权限(4)意味着能够收集所有文件和目录及其目录中的元数据。写权限(2)授予更改目录内容的权限。暗示添加和删除文件,更改权限等。执行权限(1)表示您有权进入该目录。没有后者,是不可能深入目录的。当文件的内容应该改变时,网络服务器需要读取,写入和执行权限。为此需要组数字7
第二条语句是在OP的问题:
find %DOCUMENT_ROOT%/database -type f -exec chmod 760 {} \;
能够阅读和书写的文件是必需的,但它要执行的文件,不需要。 7给予文件的所有者,6给该组。网络服务器无需拥有执行该文件的权限即可更改其内容。这些写入权限只应该赋予该目录中的文件。
所有其他用户不应被授予任何权限。
对于不需要更改文件的目录,组权限为5就足够了。 文档有关权限和一些例子:
https://wiki.debian.org/Permissions
https://www.linux.com/learn/tutorials/309527-understanding-linux-file-permissions
http://www.linux.org/threads/file-permissions-chmod.4094/
你是否已经通过php.ini文件查看任何可能会拒绝文件访问的内容? – Hello71 2011-02-07 03:16:26
也确保目录是chmod'd正确的 – 2011-02-07 03:21:04
也尝试使用绝对文件名。这可能只是您对当前文件夹的解释与PHP的不同 – laher 2011-02-07 03:32:38