【问题标题】:apache /php creates file, but same page not permitted to edit fileapache / php 创建文件,但同一页面不允许编辑文件
【发布时间】:2010-11-18 18:05:00
【问题描述】:

我在进行测试时遇到了一个问题(并在 prod 上尝试过,不行),我有一个 php 脚本创建一个文件并将一些数据放入该文件中。

我已经使用 winSCP 将“所有者、组、其他”的权限设置为 R、W、X(我对命令行还不太了解)。

我可以看到脚本能够创建文件(我已删除,并且每次都正确地重新创建文件),但完全相同的脚本无法写入文件并且我获得了权限错误。 “打开流失败:权限被拒绝”

这是我正在使用的脚本,它在 Windows 上工作,但现在在 linux 上,不行。

有什么想法吗?

$type='得到'; $count_my_page = ("list".$counterDate.".txt"); if(!file_exists($count_my_page)){ $fp=fopen($count_my_page, "w"); $putArray=array($type=>'1'); $putJson=json_encode($putArray); fputs($fp, $putJson); fclose($fp); } 别的 { $hits = file($count_my_page); 如果(空($命中)){ $putArray=array($type=>'1'); $putJson=json_encode($putArray); } 别的 { $putArray=json_decode($hits[0], true); if(!array_key_exists($type, $putArray)){ $putArray[$type] = '1'; } 别的 { $hit=$putArray[$type]; $putArray[$type]++; } } $putJson=json_encode($putArray); $fp=fopen($count_my_page, "w"); fputs($fp, $putJson); fclose($fp); }

【问题讨论】:

    标签: php linux apache


    【解决方案1】:

    创建文件需要目录的写入权限(这可能是您使用 winscp 设置的?)

    但是修改文件需要文件本身的写权限。
    要向 Apache 授予此类权限,您可能必须在创建文件后使用函数 chmod

    我想这样的事情可能会做:

    chmod($count_my_page, 0666);
    

    6 = 4(读取)+ 2(写入)。
    您无需授予执行 (1) 特权。

    这有帮助吗?


    而且我认为它可以在 Windows 上运行,因为 Apache 以您的用户身份运行 (或以管理员身份) - 或者因为 Windows 的权限系统更宽松


    编辑:有关 Linux 下权限的更多详细信息,您可以查看 this part of the corresponding Wikipedia article(quoting)

    共有三种特定权限 在适用于的类 Unix 系统上 每个班级:

    • 读取权限,授予读取文件的能力。设置时 对于目录,此权限 授予阅读名称的能力 目录中的文件(但不是 了解有关的任何进一步信息 它们,包括文件类型、大小、 所有权、权限等)
    • 写权限,授予修改文件的能力。设置时 对于目录,此权限 授予修改条目的能力 在目录中。 这包括 创建文件、删除文件和 重命名文件。
    • 执行权限,授予执行文件的能力。这 必须为可执行文件设置权限 二进制文件(例如,已编译的 c++ 程序)或 shell 脚本(用于 例如,一个 Perl 程序),以便 允许操作系统运行 他们。为目录设置时,此 权限授予能力 遍历它的树以便访问 文件或子目录,但看不到 目录中的文件(除非 读取已设置)。


    你也可以通过umask 获得乐趣,但我一直更喜欢在必要时调用 chmod(并且仅在必要时:我不喜欢提供太多权限——这样更安全) - - 如果我没记错的话,umask 可能对某些服务器有一些问题

    【讨论】:

    • 帮助很大,谢谢。起初我不知道你打算把它放在哪里,但我移动了一点,直到它最终位于 fpopen 的正下方。
    • 不客气 :-) (顺便说一句,我也不知道把它放在哪里,但我通常最终把 chmod 调用放在 fclose 之后;这样,我确定一切都完成了与文件)
    • 尽管这是公认的答案,但我有一个问题:Web 服务器用户应该是文件所有者,除非服务器有一个非常奇怪的 umask,否则已经拥有读写权限给它。
    • 其实你说的很对,我现在也在问自己同样的问题 :-D (起初我并没有真正注意到文件的创建和访问问题都在阿帕奇——奇怪)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多