我一直在慢慢学习 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;
}
我已经通过检查客户端的 wire shark 知道 http post 已正确发送,我还确保我正在写入文件的目录具有正确的权限,并且 php 安全模式设置为关闭。
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成功覆盖
关于PHP 警告 : move_uploaded_file() unable to move,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13723174/