【问题标题】:PHP refusing to upload picturePHP拒绝上传图片
【发布时间】:2016-10-21 01:20:44
【问题描述】:

我正在做一个项目,但是在测试上传图片功能时,它一直给我错误。该网站位于 Portal.website.com 链接上(所以不是 www,不知道是否重要)

无论如何,这是我得到的消息:

警告:move_uploaded_file(img/uploads/IMG_20160402_244056496.jpg) [function.move-uploaded-file]:无法打开流:/home/xxx/domains/website.com/public_html/portal 中没有这样的文件或目录/artikeltoevoegen.php 第 33 行

警告:move_uploaded_file() [function.move-uploaded-file]:无法在 /home/xxx/domains/website.com/public_html 中将“/tmp/phpf277z2”移动到“img/uploads/IMG_20160402_244056496.jpg” /portal/artikeltoevoegen.php 第 33 行

这是 php 部分,表单本身非常标准并且可以完美运行

if (isset($_POST['uploadArticle']))
{
    $title = $_POST['title'];
    $article = $_POST['article'];
    $files = $_FILES['files'];
    $valid_formats = array("jpg", "png", "gif", "zip", "bmp");
    $max_file_size = 1024*1000; //1000 kb
    $count = 0;
    foreach ((array) $_FILES['files']['name'] as $f => $name) 
    {     
        if ($_FILES['files']['error'][$f] == 4) 
        {
            continue; // Skip file if any error found
        }          
        if ($_FILES['files']['error'][$f] == 0) 
        {              
            if ($_FILES['files']['size'][$f] > $max_file_size) 
            {
                $message[] = "$name is too large!.";
                continue; // Skip large files
            }
            elseif( ! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats) )
            {
                $message[] = "$name is not a valid format";
                continue; // Skip invalid file formats
            }
            else
            { 
                // No error found! Move uploaded files 
                if(move_uploaded_file($_FILES["files"]["tmp_name"][$f],"img/uploads/".$name))
                {
                    $count++; // Number of successfully uploaded file
                    echo $count;
                }
            }
        }
    }
}

【问题讨论】:

  • 您是否检查过文件夹/home/xxx/domains/website.com/public_html/portal/img/uploads 确实已经存在?它不会以这种方式为您创建文件夹。
  • 确实如此,我自己创建的
  • 什么是权限?你能发布namei -l /home/xxx/domains/website.com/public_html/portal/img/uploads用户的输出吗?网络服务器正在运行的用户需要在路径中的所有目录上+x,在最后一个目录上+x
  • 恰好是权限是的。将其从 755 更改为 777。从未遇到过问题,但我现在会记住它。

标签: php


【解决方案1】:

由于错误表明您传递给 move_uploaded_file 的路径不存在。

如果 img 文件夹与您调用 move_uploaded_file 的 php 文件位于同一目录中,请尝试使用相对 url:

if(move_uploaded_file($_FILES["files"]["tmp_name"][$f],"./img/uploads/".$name))

通过在img前面添加./

【讨论】:

  • 你试过放完整的网址吗?
  • 不幸的是也没有运气
【解决方案2】:

好的,这恰好是我尝试写入的文件夹的服务器权限。我将它从 755 更改为 777 现在它工作得很好。

希望有人可以使用此信息

【讨论】:

  • chmod 很重要,chown 也很重要;确保它是同时拥有文件夹 lucas 的 Web 服务器用户和组
猜你喜欢
  • 2012-07-16
  • 1970-01-01
  • 2011-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多