【问题标题】:$_FILES is not empty but move_uploaded_file returns false$_FILES 不为空,但 move_uploaded_file 返回 false
【发布时间】:2013-03-30 18:47:37
【问题描述】:

我有问题。从几个小时开始,我试图让上传脚本正常工作。我还阅读了有关 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。

编辑:该文件夹现在是可写的。

【问题讨论】:

  • 你确定upload/ 存在并且是可写的吗?
  • 是的文件夹存在,权限是755。我认为这些是正确的权限。
  • 你可以在 move_uploaded_file() 之前添加这个:if(!is_writable("upload") || !is_dir("upload")){ echo "error in dir"; }
  • 如果你检查here你会读到如果文件名是一个有效的上传文件,但由于某种原因不能被移动,则不会发生任何动作,并且 move_uploaded_file() 将返回 FALSE。只需检查您的上传文件夹权限即可。
  • 是的,权限应该是 666。

标签: php file-upload


【解决方案1】:

好的,我解决了我的问题。我启用了error_resporting(),因为任何原因都没有设置权限。现在它们是 777,我可以移动文件了。

【讨论】:

    【解决方案2】:

    通过设置权限755,文件夹上传不会被其他人写入。您可以通过chmod命令设置权限至少666或更好地为apache用户设置上传文件夹的所有权。

    我在 Ubuntu 上这样设置

    sudo chown www-data:www-data upload 
    

    【讨论】:

      【解决方案3】:

      upload 上的文件夹权限设置为666。这应该确保目录是正确可写的。

      【讨论】:

        【解决方案4】:

        希望这可以帮助某人。

        我遇到了同样的问题,我的$_FILES['file']['tmp_name'] 有适当的回报,而move_uploaded_file($_FILES['file']['tmp_name'],$destination_dir) 没有回报。所以我运行了这个检查:

        if(!is_writable($destination_dir)){ echo "error in dir"; }
        

        并收到消息“目录中的错误”。连我在move_uploaded_file中的$destination_dir都设置为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 是可写的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-31
          • 1970-01-01
          相关资源
          最近更新 更多