PHP警告:移动上传的文件()无法移动

PHP警告:移动上传的文件()无法移动,php,file,file-upload,html-post,Php,File,File Upload,Html Post,我一直在慢慢地学习PHP,并发现了其他开发人员发布的关于该主题和解决方案的大量信息。我试图让android应用程序通过HTTP post将文件上传到PHP服务器。然而,在我试图用PHP编写文件时,服务器端出现了一些问题 以下是PHP代码: // Where the file is going to be placed $target_path = "/var/www/media2net/uploads/uploads"; /* Add the original filename to our

我一直在慢慢地学习PHP,并发现了其他开发人员发布的关于该主题和解决方案的大量信息。我试图让android应用程序通过HTTP post将文件上传到PHP服务器。然而,在我试图用PHP编写文件时,服务器端出现了一些问题

以下是PHP代码:

// Where the file is going to be placed
$target_path = "/var/www/media2net/uploads/uploads";

/* Add the original filename to our target path.
Result is "uploads/filename.extension" */
$target_path = $target_path . basename($_FILES['uploadedfile']['name']);

if (move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
    echo "The file ".  basename( $_FILES['uploadedfile']['name']) .
        " has been uploaded";
    chmod("uploads/" . basename($_FILES['uploadedfile']['name']), 755);
} else {
    echo "There was an error uploading the file, please try again!";
    echo "filename: " . basename( $_FILES['uploadedfile']['name']);
    echo " target_path: " .$target_path;
}
通过检查客户端上的WireShark,我已经知道http post已正确发送,并且我已确保将文件写入的目录具有正确的权限,并且php安全模式设置为off

apache2 error.log文件的输出读取

[Wed Dec 05 09:25:36 2012] [error] [client 74.14.162.250] PHP Warning:  
move_uploaded_file(): Unable to move '/tmp/phpVLOnn3' to  
'/var/www/media2net/uploads/downloaded_file.png' 
in /var/www/media2net/upload.php on line 9

对此问题的任何帮助或解决问题的其他方法都将不胜感激。

通过使用“chown”或“chmod”更改/var/www/media2net/uploads/的上载权限

例子

$ sudo chown apache:apache /var/www/media2net/uploads/
$ sudo chmod 755 /var/www/media2net/uploads/
此外,如果该目录中已经存在
downloaded_file.png
,并且该目录属于另一个用户,那么您也需要更改该文件的所有权

$ sudo chown apache:apache /var/www/media2net/uploads/downloaded_file.png

这样,它就可以被Apache成功覆盖。

这为我解决了问题:

$ sudo chown -R www-data:www-data /var/www/html/

这个在Ubuntu操作系统中运行良好。您只需要更改所有权


sudo chown-R www-data:www-data(图像文件夹的路径)

上载文件夹可写吗?您确定权限正确吗?你能发布
ls-l/var/www/media2net|grep uploads
命令的输出吗?首先检查$target|path变量它包含双重上传,并检查var/www是否具有写入权限。我想这会对你有所帮助。如果这有所不同,这是一个运行ubuntu server 12.04I appologize的amazon ec2实例,这绝对是文件权限(令人沮丧)是的,我知道。这只是一个例子,改变了它。将所有权转换为apache:apache对我不起作用。我使所有权与原始php脚本的所有者相同。这也允许我使用限制性更强的chmod 770。必须使用与Web服务器相同的用户(如果您使用mod_php),或者使用与php fpm相同的用户(如果您使用该用户)。例如,Debian将www数据用于apache。