支持 PHP Linux 安全模式的文件检查


PHP Linux safe mode capable file check

我的引导程序中有一个简单的检查,它应该检查目录是否可写。

我目前使用功能 http://php.net/manual/en/function.is-writable.php

但如文档中所述:

请记住,PHP 可能以 Web 服务器运行的用户 ID 访问文件(通常是"没有人")。不考虑安全模式限制。

它忽略了 Linux 进入安全模式的情况,这发生在我们身上 1 个月前,即使文件写入是不可能的,该函数也返回 true,因为它忽略了安全模式(大多数文件系统获得无所有者状态)

如何正确处理该安全模式并让我的脚本死亡而不在每次检查时创建新文件(会产生疯狂的性能问题)?

你可以像这样使用 stat() 函数或 fileperms() 函数

function isWritable($file) {
    $perms = fileperms($file);
    if (is_writable($file) 
      || ($perms & 0x0080)  // owner writable
      || ($perms & 0x0010)  // group writable
      || ($perms & 0x0002)) // world writable
        return true;
}