« 解决Lilina不能显示网站图标的问题 »
Weblog » http://www.anysql.net/weblog/lilina_dreamhost_icon.html 2006-11-29我的站点架在DreamHost上面, 发现基于Lilina的RSS页面中, 不能显示每个订阅的网站的favicon.ico图标, 昨晚研究了一会, 终于搞明白了什么问题, 并改了一下代码搞定这个问题.
问题应当是由DreamHost重新编译或升级了他们的PHP引起的, 在编译过程中他们指定了allow_url_fopen为false, 这样的话PHP函数get_file_contents函数就不能打开url来取得别人网站上的图标了, 通过改成用curl来实现抓取功能就可以了.
打开lib.php文件, 找到channelFavicon函数, 将下面的两行:
if (!($data = @file_get_contents($ico_url)))
$data=$empty_ico_data ;
if (stristr($data,'html')) $data=$empty_ico_data ;
替换为:
$ch = curl_init($ico_url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
if (!$data) $data=$empty_ico_data ;
if (stristr($data,'html')) $data=$empty_ico_data ;
DreamHost作此改变应当是为安全考虑吧!


很有参考价值 :)
dreamhost 限時促銷,折價$99.99
这个方法不错