$ _FILES不为空,但move_uploaded_file返回false

时间:2013-03-30 18:47:38

标签: php file-upload

我有问题。几小时后我尝试上传脚本工作。我还读了一些关于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。

编辑:该文件夹现在可以写入。

4 个答案:

答案 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。