【问题标题】:PHP is uploading files with no read permissionsPHP正在上传没有读取权限的文件
【发布时间】:2016-05-07 16:40:18
【问题描述】:

当通过 PHP 上传图片时,创建的结果文件具有不允许 Apache 在以后的请求中读取文件的权限。上传文件的示例权限如下所示:

--w-rw----+  1 www-data www-data 76551 Jan 29 19:52 original.jpeg

包含文件夹的权限如下所示:

drwxr-xr-x+ 41 www-data www-data 4096 Jan 29 19:52 media

Apache 运行为 www-data 这个问题只发生在暂存阶段(当然)。在我的开发环境中,文件上传没有问题,因此不太可能是代码问题。我正在使用 Ubuntu 的 ACL,我怀疑这可能与它有关。

上传目录上getfacl的结果:

# file: web/media
# owner: www-data
# group: www-data
user::rwx
user:ubuntu:rwx         #effective:r-x
group::r--
mask::r-x
other::r-x
default:user::-wx
default:user:www-data:rwx 
default:user:ubuntu:rwx
default:group::r-- 
default:mask::rwx
default:other::--x

getfacl 对文件本身的结果:

# file: web/media/original.jpeg
# owner: www-data
# group: www-data
user::-w-
user:www-data:rwx       #effective:rw-
user:ubuntu:rwx         #effective:rw-
group::r--
mask::rw-
other::---

有什么想法吗?

【问题讨论】:

标签: php apache ubuntu file-upload permissions


【解决方案1】:

我想通了。怀疑这是ACL问题。上传目录上 ACL 的 default:user::-wx 行指示应使用 -wx 作为用户权限创建新文件。运行sudo setfacl -d -m u::rwx <upload dir> 解决了这个问题。

【讨论】:

    【解决方案2】:

    你的umask是什么?

    <?php
    
    umask(0022); //unset the write bits, should yield rw-r-r-
    
    //Then your file magic
    file_put_contents($filename, $content);
    

    【讨论】:

      猜你喜欢
      • 2011-04-08
      • 2014-10-23
      • 1970-01-01
      • 2017-02-12
      • 2013-02-05
      • 2019-12-27
      • 2012-10-21
      • 2015-02-14
      • 2015-09-01
      相关资源
      最近更新 更多