解决Lilina不能显示网站图标的问题

    我的站点架在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作此改变应当是为安全考虑吧!

留言 (3)

很有参考价值 :)

这个方法不错

发表留言:

« Previous | Main | Next »

英语900句 | English 900

  • That's just what I was looking for.
  • 那正是我所期待的.
  • It might be, I suppose.
  • 我想可能是这样.
  • Good try, but not quite right.
  • 是个很好的尝试, 但并不完全正确.
  • That's rather disappointing.
  • 真是让人失望.
  • In my opinion, your new coat is not worth so much money.
  • 我认为你的外套不值得这么多钱.