【问题标题】:Copy image from URL to Web Server File System将图像从 URL 复制到 Web 服务器文件系统
【发布时间】:2013-04-28 22:09:25
【问题描述】:

尝试构建一个表单,用于通过 url 上传图像并将其从那里复制到我的服务器。

搜索以下主题:

我试过了:

$pic = Submitted image URL
$pic = Submitted image name . ".jpg"

copy($pic, $_SERVER['DOCUMENT_ROOT'] . '/mydir/' . $picname);

结果:

警告:复制(mydir/mypic.jpg)[function.copy]:无法打开流:第 42 行的 /home/user/public_html/mysite.ca/upload.php 中没有这样的文件或目录

这个:

$fp = fopen($_SERVER['DOCUMENT_ROOT'] . '/mydir/' . $picname, "w");
fwrite($fp, $pic);
fclose($fp);

结果:

警告:fwrite() 期望参数 1 是资源,布尔值在第 47 行的 /home/user/public_html/mysite.ca/upload.php 中给出

警告:fclose() 期望参数 1 是资源,布尔值在第 48 行的 /home/user/public_html/mysite.ca/upload.php 中给出

目录权限是 777,它们在服务器上的任何地方都没有个人信息。任何日志都没有错误,我不知道如何解决这个问题?

【问题讨论】:

    标签: php


    【解决方案1】:

    仅当您的服务器启用了allow_url_fopen 选项时,才能直接打开类似文件的 URL。

    fopen() 失败并返回 FALSE 但您没有检查。您的文件名或目录权限有问题。

    【讨论】:

    • 如果在 localhost 上工作,这会在 php.ini 中吗?在网络上的 cPanel 上找不到任何对它的引用,需要管理员做些什么?
    • allow_url_fopen=off 会在使用 copy 时生成不同的错误消息……
    【解决方案2】:

    $fp = fopen($_SERVER['DOCUMENT_ROOT'] . '/mydir/' . $picname, "w"); 这似乎有问题。 分两部分执行此操作,例如$path = $_SERVER['DOCUMENT_ROOT'] . '/mydir/'.$picname; $fp = fopen($path, "w"); 。现在你可以echo $path 看看是否正确?如果还是有问题,尝试使用相对路径,比如$path = "./mydir/$picname"; echo $path;,直接去那个文件夹看看文件夹是否存在。

    【讨论】:

      【解决方案3】:

      警告:复制(mydir/mypic.jpg)[function.copy]:无法打开流:第 42 行的 /home/user/public_html/mysite.ca/upload.php 中没有这样的文件或目录

      听起来您尝试将文件复制到的目标路径是错误的。

      您检查过路径实际包含的内容吗?

      var_dump($_SERVER['DOCUMENT_ROOT'] . '/mydir/' . $picname);
      

      除了当前的错误之外,如果您接受客户端发送的用于构建名称的任何路径/文件名信息,那么您将在服务器中挖出一个巨大的安全漏洞在没有任何进一步控制/限制的情况下保存图像。

      【讨论】:

      • 目录名是在公共目录之外定义的常量,这样描述更方便。此表单仅供我上传大量图片使用。
      • var_dump() string(79) "/home/user/public_html/mysite.ca/mydir/mypic.jpg"
      • 并且在您运行脚本的同一文件夹中的文件夹mydir 已经存在......?如果没有,您必须先创建它 (mkdir),然后才能将文件复制到其中!
      猜你喜欢
      • 2014-01-04
      • 2015-02-14
      • 2014-03-30
      • 2011-08-15
      • 1970-01-01
      • 2016-07-10
      • 1970-01-01
      • 2013-05-11
      • 1970-01-01
      相关资源
      最近更新 更多