PHP:创建文件但不能附加(显然)正确的服务器权限(LAMP)

时间:2015-10-03 10:29:08

标签: php linux apache .htaccess permissions

我在这个主题上看到了很多问题和答案,但似乎没有一个对我的情况有所帮助。我的PHP代码成功创建了一个新的日志文件,但是无法访问该文件以附加更多信息,关闭它等等。

我正在将一个应用程序从本地XAMPP迁移到LAMP:因此,由于Windows / XAMPP没有出现许可问题,现在只出现问题。

我从默认的Bitnami LAMP堆栈开始,然后在服务器上手动设置相关的目录权限: - 我的sftp用户在htdocs上有rwx和各种不合适的web-root目录 - apache正在作为'守护进程'运行所以我给了read&对“守护进程”的相关目录执行权限作为组 - 在大多数目录中,我不允许“守护进程”的写权限 - 但是对于我的(应用程序生成的,内部的)日志,我有一个'logfiles'目录,它对我的​​用户和'守护进程'组都有rwx - 'other'是-rwx for all

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

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

-rw-r--r-- 1 daemon daemon 962 Oct  3 10:14 20151003logfile03-10-33530.txt

这告诉我该文件是由Apache(即我的PHP脚本)创建的,并且它具有读写权限,从我用“w”开启()时

编辑:添加目录信息: 文件夹级权限为我的ftps用户和守护进程(组)提供了完整的rwx访问权限:

drwxrwx--- 2 ftpuser daemon 4096 Oct  3 10:30 logfiles

但它不能用“a”

打开

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

但是,鉴于直接指定的操作系统级权限,我无法理解为什么它应该是一个问题...也许Apache在此目录上也需要.htaccess'allow'?

有什么想法吗?

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

那我在这里错过了什么?为什么其他人可能会拒绝允许?

2 个答案:

答案 0 :(得分:0)

使用 chmod 666 获取文件和正确的用户组权限。文件所在的文件夹必须可以使用 chmod 777

进行写入

答案 1 :(得分:0)

好的 - 我发现问题是更高级别的父目录没有读/执行权限。工作中! (最后!)

有关详细信息,请参阅上一个问题:

PHP fopen() fails on files even with wide-open permissions