16

我已经完成了您的标准检查(那里的目录是否设置了足够宽松的权限),并且我很确定我已经涵盖了您的标准愚蠢的人类技巧。这是失败的代码:

move_uploaded_file($_FILES['image1']['tmp_name'], "/public_html/flashsale/assets/img/products/T".$_FILES['image1']['name']);

目录在那里 - 我从FileZilla复制了路径。我什至在 FileZilla 和HostGator控制面板的文件管理器中都将权限设置为777 。此代码生成两个警告:

消息:move_uploaded_file(/public_html/flashsale/assets/img/products/Tsirloin.jpg) [function.move-uploaded-file]:无法打开流:没有这样的文件或目录

消息:move_uploaded_file() [function.move-uploaded-file]:无法将“/tmp/phpI5GZ3S”移动到“/public_html/flashsale/assets/img/products/Tsirloin.jpg”

以该顺序。那么,文件正在上传,目录存在并设置为 777,我还能缺少什么?

4

5 回答 5

19

您不需要将完整目录放入文件中。尝试/public_html/flashsale/从您的链接中删除,看看是否可行。另外,文件不需要777权限,我自己上传文件到755权限的文件夹。

此外,您可以getcwd();在您的目标目录中使用。该功能将为您提供移动文件所需的目录。来源

于 2013-01-30T04:45:32.820 回答
11

问题

$dirpath = dirname(getcwd())

这是我最初用来获取 /public_html/upload 文件夹的目录路径的方法。$dirpath 将包含

/public_html/upload

解决方案(在服务器上)

$dirpath = realpath(dirname(getcwd()))

由于我在共享主机环境中,让 move_uploaded_file 工作的正确方法是使用它作为目标: realpath(dirname(getcwd())) 返回类似:

/home/cpanelusername/public_html/upload
于 2015-11-22T09:52:29.040 回答
2

确保您正在穿越的路径。public_html 不是必需的

$image=basename($_FILES['file']['name']);
$image=str_replace(' ','|',$image);

$tmppath="images/".$image;

        if(move_uploaded_file($_FILES['file']['tmp_name'],$tmppath))
        {
         echo "success";
        }
        else
        {
         echo "fail";
        }

希望这可以帮助

于 2013-01-30T04:58:46.250 回答
2

对于带有 XAMPP 的 Ubuntu 14.04,我也遇到了上传问题,但是在我用 修复后sudo chmod -R 777 destination,它运行良好。

这是我所做的:

在我的 Ubuntu 14.04 XAMPP 中上传的临时文件夹是 /opt/lampp/temp/。如果我希望我的上传文件/opt/lampp/temp/testupload作为目标文件夹,那么我需要下面的配置。

  1. 转到临时文件夹

    cd /opt/lampp/temp/
    
  2. 在 /opt/lampp/temp/ 下创建“testupload”文件夹

    sudo mkdir testupload
    
  3. 更改权限 777

    sudo chmod -R 777 /opt/lampp/temp/testupload/
    
  4. PHP 代码

    move_uploaded_file($_FILES["file"]["tmp_name"], "/opt/lampp/temp/testupload/" . $_FILES["file"]["name"])
    
于 2015-11-27T15:19:19.667 回答
0

适用于 Windows 和 ISS 的解决方案:

IUSR 帐户需要目标目录中的权限。不是 ISS_IUSR 帐户,只是 IUSR 帐户。

于 2016-06-28T14:54:32.233 回答