2012-07-19 101 views
0

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

<?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); 

    } 

} 

?> 

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

+0

我怀疑这是一个所有权问题,因为试图操纵图像的用户'www-data'是上传它的那个人。 – sberry 2012-07-19 01:07:24

+0

您是否确实收到错误信息,指出Web服务器无权访问该文件? – 2012-07-19 01:30:42

+0

我实际上没有收到任何访问错误。我只是假设这是因为该文件拥有不同的所有者和www数据,但访问权限设置为读写 – 2012-07-19 01:39:49

回答

1

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

+0

我不认为我拥有上传文件的完整权限。当我右键单击上传的文件时,它将www-data作为权限选项卡中的所有者,并将访问权设置为对www数据进行读取和写入。该组也是www数据,访问权限设置为只读。在底部它说'你不是所有者,所以你不能改变这些权限'。 – 2012-07-19 01:32:38

+1

PHP通常配置为在其自己的用户下运行。当然,这与您用来点击文件的用户不同。不过,由于PHP正在创建该文件,因此它有权修改它。 – MrGlass 2012-07-19 02:05:54