我有问题。几小时后我尝试上传脚本工作。我还读了一些关于stackoverflow的其他问题,但没有任何帮助。 webspace允许file_upload,文件大小不是太大。移动下载的目录也存在。 我的HTML代码是:
Upload: <input type="file" name="file">
我的PHP代码是:
if ($_FILES['file']['error'] == 0) {
$tmp_name = $_FILES["file"]["tmp_name"];
$name_file = $_FILES["file"]["name"];
move_uploaded_file($tmp_name, "upload/" . $name_file);
}
我回复了$ _FILES,文件在那里,没有错误。每当我尝试上传文件时(我也尝试上传其他文件和文件类型),move_uploaded_file返回false。
编辑:该文件夹现在可以写入。
答案 0 :(得分:4)
好的,我解决了我的问题。我启用了error_resporting()
,因为任何原因都没有设置权限。现在它们是777,我可以移动文件。
答案 1 :(得分:3)
通过设置权限755,其他人无法写入文件夹上传。您可以通过chmod命令至少设置666权限,或者为apache用户设置更高的上传文件夹所有权。
我在Ubuntu上设置了它
sudo chown www-data:www-data upload
答案 2 :(得分:2)
将upload
上的文件夹权限设置为666
。这应该确保目录可以正确写入。
答案 3 :(得分:2)
希望这可能有助于某人。
我遇到了同样的问题,我的$_FILES['file']['tmp_name']
有正确的回报而move_uploaded_file($_FILES['file']['tmp_name'],$destination_dir)
没有返回任何内容。所以我跑了这张支票:
if(!is_writable($destination_dir)){ echo "error in dir"; }
并收到消息“dir中的错误”。即使我$destination_dir
中的move_uploaded_file
已被设置为777.经过长时间搜索,我发现了answer。所以这两个命令解决了我的问题:
sudo chmod -R 777 Ad_images/
sudo chcon -R -t httpd_sys_rw_content_t Ad_images/
现在is_writable($destination_dir)
返回1并且上传成功。
<强> TL; DR: 确保您的目标目录可以写入php。