【问题标题】:php file uploads ownership issuephp文件上传所有权问题
【发布时间】:2012-07-18 03:37:12
【问题描述】:

我正在尝试在 PHP 中实现照片上传和调整大小(我正在使用 LAMP 堆栈和 Imagick 扩展来调整大小)。但是,每次我尝试上传文件时,文件的所有权默认设置为 www-data,这使得无法对文件应用任何更改。以下是我正在使用的代码:

<?php

if (is_uploaded_file($_FILES['picture']['tmp_name'])){

  $photoPath = $_SERVER['DOCUMENT_ROOT'] . '/photo_app/uploads/' . $_FILES['picture']['name'];

  if (move_uploaded_file($_FILES['picture']['tmp_name'], $photoPath)){

        $image = new Imagick($photoPath);
        $image -> scaleImage(250, 250, true);
        $image -> writeImage($photoPath);

  }   

}

?>

照片被移动到正确的位置,但由于所有权问题没有调整大小。有没有办法解决这个问题?谢谢:)

【问题讨论】:

  • 我怀疑这是一个所有权问题,因为试图操纵图像的用户 www-data 是最初上传图像的那个人。
  • 您是否真的收到表明 Web 服务器无权访问该文件的错误?
  • 我实际上没有遇到任何访问错误。我只是假设是因为文件有不同的所有者,但是对于 www-data,访问权限设置为读取和写入

标签: php file-upload imagick ownership


【解决方案1】:

上传文件的用户将是运行 PHP 的用户。由于您是从同一个 php 实例上传和操作文件,因此您应该拥有完整的文件权限。

【讨论】:

  • 我认为我没有上传文件的全部权利。当我右键单击上传的文件时,它在权限选项卡中显示 www-data 作为所有者,并且访问权限设置为对 www-data 进行读写。该组也是 www-data 并且访问权限设置为只读。在底部显示“您不是所有者,因此您无法更改这些权限”。
  • PHP 通常配置为在自己的用户下运行。当然,这与您用来单击文件的用户不同。尽管如此,由于 PHP 正在创建文件,它有修改它的权限。
猜你喜欢
  • 1970-01-01
  • 2011-07-29
  • 2015-06-05
  • 2011-04-16
  • 1970-01-01
  • 1970-01-01
  • 2010-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多