尝试构建一个表单,通过url上传图像并将其从那里复制到我的服务器。
搜索以下主题:
我试过这个:
$pic = Submitted image URL
$pic = Submitted image name . ".jpg"
copy($pic, $_SERVER['DOCUMENT_ROOT'] . '/mydir/' . $picname);
结果:
警告:copy(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,它们在服务器上的任何位置都没有个人信息。任何日志都没有错误,我不确定如何解决这个问题?
答案 0 :(得分:1)
只有在您的服务器启用了allow_url_fopen
选项时,才能直接打开文件等网址。
fopen()
失败并返回FALSE
,但您没有检查。您的文件名或目录权限有问题。
答案 1 :(得分:0)
$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;
,然后直接转到该文件夹以检查文件夹是否存在。
答案 2 :(得分:0)
警告:copy(mydir / mypic.jpg)[function.copy]:无法打开流:第42行/home/user/public_html/mysite.ca/upload.php中没有此类文件或目录
这听起来像您尝试复制文件的目标路径是错误的。
您是否检查了路径实际包含的内容?
var_dump($_SERVER['DOCUMENT_ROOT'] . '/mydir/' . $picname);
除了当前的错误之外,如果您接受客户端发送的任何路径/文件名信息,您正在服务器中泄漏巨大的安全漏洞在没有任何进一步控制/限制的情况下保存图像。