在GitHub https://github.com/ao/favicons上找到了这个PHP脚本,并且看起来运行良好。易于合并到可能需要收藏夹图标的其他脚本中。
注意:似乎受尊敬的用户在这里建议不要使用此代码...请参阅下面的评论...
我遇到的问题是机器无法正常工作。如果您查看index.php的顶部,则会看到:
<?php
error_reporting(0);
// Change the location where images are stored/retrieved
//$_CACHE_PATH = "../favicon_cache"; // one directory up
$_CACHE_PATH = "cache"; // current directory
if (!isset($_GET['url'])) die();
if (substr( $_GET['url'], 0, 4 ) !== "http") {
$_GET['url'] = "http://".$_GET['url'];
}
$parse = parse_url($_GET['url']);
$domain = $parse['host'];
if (isset($_GET['refresh'])) {
@unlink('../'+$_CACHE_PATH+'/'.$domain);
}
if (isset($_GET['debug'])) {
require 'FaviconDownloader.php';
$_favicon = new FaviconDownloader($_GET['url']);
$_favicon->debug();
die();
}
if (file_exists($_CACHE_PATH+'/'.$domain)) {
//show cached copy first!
header('Content-Type: image/png');
echo file_get_contents($_CACHE_PATH+'/'.$domain);
die();
}
require 'FaviconDownloader.php';
$favicon = new FaviconDownloader($_GET['url']);
if($favicon->icoExists){
if (!file_exists($_CACHE_PATH+'/'.$domain)) {
file_put_contents($_CACHE_PATH+'/'.$domain, $favicon->icoData);
}
header('Content-Type: image/png');
echo file_get_contents($_CACHE_PATH+'/'.$domain);
} else {
header('Content-Type: image/png');
echo file_get_contents('default.png');
}
?>
整个index.php:https://github.com/ao/favicons/blob/master/index.php
无论我将缓存文件夹更改为什么,所有图标都仍会写入根文件夹。尝试对代码进行一些调整,但似乎没有任何效果。删除error_reporting(0);在index.php顶部没有显示任何其他错误(仅显示:资源被解释为Document,但在开发者控制台中以MIME类型image / png传输)。
我的缓存文件夹是可写的,并且已正确分配给所有者,因此请确保在那里没有问题。
开始在GitHub上提问/公开问题,但看到另一个人也遇到同样的问题,而作者没有给出答案。希望这里的PHP技术比我更好的人可以为我指明正确的方向。
答案 0 :(得分:1)
您应该使用点运算符(。)来缩进字符串,例如
echo file_get_contents($_CACHE_PATH+'/'.$domain);
应更改为
echo file_get_contents($_CACHE_PATH.'/'.$domain);