PHP:创建文件,但可以';t附加(显然)正确的服务器权限(LAMP)

PHP:创建文件,但可以';t附加(显然)正确的服务器权限(LAMP),php,linux,apache,.htaccess,permissions,Php,Linux,Apache,.htaccess,Permissions,我已经看到很多关于这个话题的问题和答案,但似乎没有一个对我的情况有帮助。我的PHP代码正在成功地创建一个新的日志文件,但随后无法访问该文件以附加更多信息、关闭它等等 我正在将一个应用程序从本地XAMPP迁移到LAMP上:因此,由于Windows/XAMPP没有提供任何权限问题,现在才出现问题 我从一个默认的Bitnami LAMP堆栈开始,然后在服务器上手动设置相关的目录权限: -我的sftp用户在htdocs上有rwx,并在web根目录中分类 -apache作为“守护进程”运行,因此我已为“守

我已经看到很多关于这个话题的问题和答案,但似乎没有一个对我的情况有帮助。我的PHP代码正在成功地创建一个新的日志文件,但随后无法访问该文件以附加更多信息、关闭它等等

我正在将一个应用程序从本地XAMPP迁移到LAMP上:因此,由于Windows/XAMPP没有提供任何权限问题,现在才出现问题

我从一个默认的Bitnami LAMP堆栈开始,然后在服务器上手动设置相关的目录权限: -我的sftp用户在htdocs上有rwx,并在web根目录中分类 -apache作为“守护进程”运行,因此我已为“守护进程”组的相关目录授予了读取和执行权限 -在大多数目录中,我不允许对“daemon”具有写入权限 -但是,对于我的(应用程序生成的内部)日志,我有一个“logfiles”目录,其中包含我的用户和“daemon”组的rwx -“其他”是所有人的rwx

当我运行我的应用程序时,它几乎立刻就崩溃了。错误日志显示fopen无法打开流:权限被拒绝。但是,权限表明它应该具有访问权限

当我检查涉及的文件时,它具有以下权限:

-rw-r--r-- 1 daemon daemon 962 Oct  3 10:14 20151003logfile03-10-33530.txt
这告诉我,该文件是由Apache创建的(即,由我的PHP脚本创建),并且从我使用带有“w”的fopen()开始,它具有读写权限

编辑:添加目录信息: 文件夹级权限授予我的ftps用户和守护程序(组)完全rwx访问权限:

drwxrwx--- 2 ftpuser daemon 4096 Oct  3 10:30 logfiles
但它不能用“a”开头

我假设这是一个文件权限问题,因为: a) 它在XAMPP上运行良好 b) 它在错误日志中声明权限错误

然而,我不明白为什么这会是一个问题,因为直接指定了操作系统级别的权限。。。也许Apache在此目录上也需要.htaccess“allow”

有什么想法吗


澄清为什么我不认为CHMOD是答案(抱歉@RedAcid): chmod777等只是一种设置我已经拥有的基础权限的方法。每个数字代表3个二进制字符,因此7是111(即读、写和执行)。正如您在上面看到的,我已经在文件夹上读/写/执行PHP/Apache,以及读/写文件。我所读到的内容表明,您需要在目录级别执行,而不是在文件级别执行,因为它不尝试执行文件


那么我在这里错过了什么?否则它为什么会拒绝权限?

对文件和适当的用户组权限使用chmod 666。文件所在的文件夹必须使用chmod 777

对文件使用chmod 666和适当的用户组权限可写。文件所在的文件夹必须可以使用chmod 777写入。确定-我发现问题是更高级别的父目录没有读取/执行权限。现在开始工作!(终于!)

有关更多详细信息,请参见上一个问题:


确定-我发现问题在于更高级别的父目录没有读取/执行权限。现在开始工作!(终于!)

有关更多详细信息,请参见上一个问题:


不要777或666——这两种都会给任何人带来重大的访问->重大的安全问题。关键是用户权限似乎是正确的,并且它能够创建文件。。。那么,如果文件夹或静态介质中只有日志文件,为什么不能附加它的非安全性问题呢。。。关键是我不想让其他人看到它们,因为权限不正确,所以无法追加。文件不可写您必须使用chmod 666您还可以使用htaccess对所有人进行拒绝以保护文件夹。然后chmod你的文件/文件夹不要777或666——这两个都给了任何人重大的访问->重大的安全问题。关键是用户权限似乎是正确的,并且它能够创建文件。。。那么,如果文件夹或静态介质中只有日志文件,为什么不能附加它的非安全性问题呢。。。关键是我不想让其他人看到它们,因为权限不正确,所以无法追加。文件不可写您必须使用chmod 666您还可以使用htaccess对所有人进行拒绝以保护文件夹。然后chmod文件/文件夹