【问题标题】:PHP file is not writeable: how to check via php if chmod, chown or chgrp is requiredPHP 文件不可写:如何通过 php 检查是否需要 chmod、chown 或 chgrp
【发布时间】:2011-07-29 12:14:44
【问题描述】:

当我的安装脚本识别出一个文件(日志文件)不可写时——作者:

 is_writable('myerror.log');

我想向“冲浪者”(软件管理员)展示如何解决此问题。哦,天哪,不是每个“软件管理员”都很熟练:-(

显示消息: 我想向软件管理员表明,如果文件的用户/组与网络服务器用户/组不同,他应该将文件的所有者设置为运行网络服务器的用户(我不想建议让它成为世界可写)。

如果 webservers 用户或组适合文件用户或组,我想表明软件管理员应该运行 chmod。


背景 我意识到我的 apache 进程在 9x www-data 和 1x root 下运行。如果我打电话给

$scriptRunnerUserId = getmyuid();
$scriptRunnerGroupId = getmygid();

每个我都会得到 0,意思是“root”和“root”。但是,如果我有一个文件所有者=“root”和组=“root”并且 0664 is_writeable() 仍然返回false。仅当我设置 0666(世界可写)时,它才返回 true。如果我设置 owner="www-data" 和 chmod 0644 它是可写的。意思是:getmyuid() 不返回预期值。

“开发人员不熟练”的案例? ;-) (如果可能的话,我不想进行 exec() 调用)

PS:请不要责怪我的 apache 是 root 用户(它是用于开发的虚拟机)。

【问题讨论】:

  • 使用posix_getpid / posix_getgid 作为网络服务器运行的用户(这很可能是您想要拥有该文件的用户)。
  • 不要破坏整个想法,但实际上可能有一个不可写的 0777,出于各种其他原因。

标签: php file permissions


【解决方案1】:

假设您在 POSIX 系统上运行(如果您有 root 用户,这可能是正确的),您可以尝试使用 posix_geteuid 之类的方法来找出您的有效用户 ID。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-07
    • 2016-05-08
    • 2012-07-03
    • 2015-03-16
    • 1970-01-01
    • 2010-12-28
    • 2017-06-22
    • 2011-05-27
    相关资源
    最近更新 更多