我使用这个开源 http://code.google.com/p/timthumb/
但我尝试从我的主机创建一个拇指得到一个错误 这个链接图像希望创建一个拇指。
http://pixhost.info/avaxhome/94/91/00179194.jpeg
error reading file http://pixhost.info/avaxhome/94/91/00179194.jpeg from remote host: Failed writing body (37 != 1448)
Query String : src=http://pixhost.info/avaxhome/94/91/00179194.jpeg
答案 0 :(得分:0)
您应该在要找到timthumb.php的目录中手动创建两个子文件夹cache
和temp
。这些子文件夹需要将权限设置为尽可能开放(在Linux机器上为777),以便让服务器用户帐户写入这些权限。那一切都应该没问题。请注意,您无法从网上抓取图片(据我所知)。图片应放在本地机器上。
示例:http://myserver.com/web/timthumb.php?src=scotland.jpg
答案 1 :(得分:0)
错误似乎来自curl
命令:
$ch = curl_init ($src);
curl_setopt ($ch, CURLOPT_TIMEOUT, 15);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1");
curl_setopt ($ch, CURLOPT_URL, $src);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0');
curl_setopt ($ch, CURLOPT_FILE, $fh);
if (curl_exec ($ch) === FALSE) {
if (file_exists ($local_filepath)) {
unlink ($local_filepath);
}
display_error ('error reading file ' . $src . ' from remote host: ' . curl_error($ch));
}
curl_close ($ch);
fclose ($fh);
它可能来自超时。你可以改变它@ line 607
编辑:
好吧,我测试了它(因为有人不认为指出代码正在做错误并且猜测是不够的)它在我的服务器上完美运行。
所以它可以是:
fopen
不起作用。它用于保存服务器上的远程图像;如果没有地方可以保存,那么curl
命令就会失败。答案 2 :(得分:0)
这只是因为你要求curl创建一个文件名,操作系统(或者更确切地说是你的文件系统)不允许它使用。
您的代码指定如果该文件不存在,则继续从该URL获取副本,并且您不会在PHP脚本中创建本地文件。
在你的CURL中你的代码说
$fh = fopen ($local_filepath, 'w');
在PHP w 中有一个描述:
仅供写作;将文件指针放在文件的开头,并将文件截断为零长度。如果该文件不存在,会尝试创建。
无法创建文件的主要原因是文件夹权限,因为我们在该文件夹(define ('DIRECTORY_CACHE', './cache');
)中有一个常量,您需要在其中包含一个名为缓存的文件夹执行脚本的相同目录 ./
此 CHMOD 文件夹 777 并再次运行脚本
答案 3 :(得分:0)
或许您应该添加域名,如果它是外部的。
$allowedSites = array (
'flickr.com',
'picasa.com',
'blogger.com',
'wordpress.com',
'img.youtube.com',
);
(参见timthumb.php文件)