我目前正致力于上传,调整大小和裁剪脚本。 我在从网址复制图片并将其保存到我的服务器上时遇到了一些问题。
这是我发生错误的代码。 我用[MYDOMAIN]替换了我的域名 - 所以忽略了:)
if(in_array($extension, $extensions_allowed) )
{
$name = explode(".".$extension, $_FILES['image']['name']);
$name = $name[0]."_".time();
move_uploaded_file($_FILES['image']['tmp_name'], "temp/".$name.".".$extension);
// File uploaded to temporary folder, now lets replace the newly created temp image with a resized image
$source = 'timthumb.php?src=http://[MYDOMAIN]/includes/crop/temp/'.$name.'.'.$extension.'&w=398'; // Set source to be the resized image
$dest = $_SERVER['DOCUMENT_ROOT'].'/includes/crop/temp/r'.$name.'.'.$extension; // Destination = temp folder, rdy to be cropped.
if(copy($source, $dest)) {
// If the image was transfered/copied successfully
unlink("temp/".$name.".".$extension); // Remove old temp img. "not the resized"
// The old one has been removed, so now the new file can take its place, lets rename it.
$current = 'temp/r'.$name.'.'.$extension;
$new = 'temp/'.$name.'.'.$extension;
rename($current, $new); // Old temp name becomes the new.
}
else {
echo "Couldnt copy file, try again.";
die();
}
$_SESSION['image']['extension'] = $extension;
$_SESSION['image']['name'] = $name;
//REDIRECT ON SUCCESS
header("Location: /includes/crop/edit.php");
}
我觉得编写完整的代码是必要的,因为我知道它正在工作,而且这里只会出错。
所以我的move_uploaded_files()
工作正常,但错误发生在下面的if语句中。
if(copy($source, $dest)) {
// If the image was transfered/copied successfully
unlink("temp/".$name.".".$extension); // Remove old temp img. "not the resized"
// The old one has been removed, so now the new file can take its place, lets rename it.
$current = 'temp/r'.$name.'.'.$extension;
$new = 'temp/'.$name.'.'.$extension;
rename($current, $new); // Old temp name becomes the new.
}
else {
echo "Couldnt copy file, try again.";
die();
}
我的错误讯息:
警告:复制(timthumb.php?src = http://[MYDOMAIN]/includes/crop/temp/SummerVibe Cover_1389227432.jpg& w = 398):无法打开流:/ home / [MYHOST] / public_html / pt / include中没有此类文件或目录第108行/crop/index.php
无法复制文件,请重试。
如果您想知道第108行的位置,那就是if(copy(ect))
开始的行。
希望有人可以提供帮助。 :)
最亲切的问候, SmK1337答案 0 :(得分:0)
您的错误是(或者,因为这是一个相当古老的问题),您正在尝试将相对路径复制到php脚本。 (timthumb.php?src=...
)
首先。您的错误意味着此路径不存在,这可能有两个主要原因:
timthumb.php
是一个相对路径,这意味着php将尝试相对于您当前的工作目录解析它,这可能会因您执行脚本的方式而有所不同。?src=
不是实际的查询字符串,而只是文件名的一部分。当然,此文件不存在。您应该做的是通过http发送请求到timthumb.php
脚本。
copy
可以通过http复制文件,在这种情况下(如果它是在正确配置的Web服务器上的php脚本),它将被运行。
copy('http://[MYDOMAIN]/path/to/timthumb/script/' . $source, $dest);