【发布时间】:2026-01-19 16:45:02
【问题描述】:
我已将一个错误隔离为 2 行代码:
$file = @file_get_contents( "http://d36xtkk24g8jdx.cloudfront.net/bluebar/e2609e5/images/ico/favicon.ico" );
// echo $file; // verfied file is populated
echo file_put_contents("../favicons/" . "instagram_com.ico", $file); // verifed bytes saved
我发现在浏览器中查看内容时有实际数据。
如果你愿意,看看上面HERE 的输出。
但是,保存的文件在我的客户端或服务器上似乎不是 .ico。
尽管文件扩展名正确,但我不会让我上传它,因为它被正确检测为不是图像文件。
通过将链接粘贴到浏览器的url中很容易获得正确的文件。
http://d36xtkk24g8jdx.cloudfront.net/bluebar/e2609e5/images/ico/favicon.ico
只需使用save as 下载即可。
但是,我需要自动版本工作,但不知道如何进一步解决此问题。
我确认file_get_contents 确实获得了内容,并且file_put_contents 实际上保存了内容。
但是,它不是一个有效的图像文件。
【问题讨论】:
-
在浏览器获取的内容与什么 php 正在获取?任何字节差异?不同的内容?请记住,仅仅因为两个实例中的 url 相同并不意味着服务器将向两者发送相同的内容。
-
5.4K 和 4.3K 所以它似乎是不同的数据......这种方法在不同的域上工作了前 90 次左右,这是第一个有这个问题的域。
-
检查您的浏览器是否没有以静默方式将其保存为其他文件,例如 .bmp。 IE 因默默地丢弃此类数据而臭名昭著,因为它认为自己比您更聪明。
-
使用我上面提供的链接很容易查看
file_get_contents()返回的数据。有没有办法验证它或确定问题所在。我什至无法在像 inkscape 这样的图像编辑器中打开该文件。
标签: php image file-get-contents