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

标签 php linux apache .htaccess permissions

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

我正在将应用程序从本地 XAMPP 迁移到 LAMP:因此,由于 Windows/XAMPP 未提供权限问题,问题现在才出现。

我从默认的 Bitnami LAMP 堆栈开始,然后在服务器上手动设置相关目录权限: - 我的 sftp 用户在 htdocs 和各种 out-of-web-root 目录上有 rwx -apache 作为“守护进程”运行,因此我已将“守护进程”相关目录的读取和执行权限作为组 - 在大多数目录中,我不允许“守护进程”的写权限 - 但是对于我的(应用程序生成的,内部的)日志,我有一个“logfiles”目录,它为我的用户和“daemon”组提供了 rwx - 'other' 是所有的 -rwx

当我运行我的应用程序时,它几乎立即崩溃了。错误日志显示 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“允许”?

有什么想法吗?


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

那么我在这里缺少什么?为什么它可能会拒绝许可?

最佳答案

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

写入

关于PHP:创建文件但不能附加(显然)正确的服务器权限(LAMP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32921504/

相关文章:

c - 如何在 Autoconf/Automake 项目中拥有 apache 模块和依赖的共享库

apache - 使用 https 将公园域重定向到 http

javascript - 如果可能的话,通过 php 将值从 Javascript 插入到 mysql

linux - 监控正在删除的文件

linux - 有没有办法在 Linux 上签署 OS X 软件包?

C:打开第二个自定义大小的终端并将其用于输出

PHP 强制 Apache 错误

php - MySQL WHERE 条件是否将括号视为与 PHP 相同?

php - 使用 PHP 代码在 Linux 服务器上创建目录时出错

php - 此连接语句如何产生此结果