这让我发疯了。我可以通过浏览器从互联网上下载文件,工作正常。但是,如果我使用PHP编写一个为我执行此操作的脚本,则该文件最终会完全不同(根据在线差异工具)。
$link = "https://torcache.net/torrent/9AE1726935FF9C08DF422CCE3C4445FC9484478B.torrent?title=[kat.cr]the.big.bang.theory.s08e24.720p.hdtv.x264.dimension.rartv";
file_put_contents($file_name, fopen( $link, 'r'));
首先我尝试使用编码,但这不应该,因为文件是二进制文件,对吧?还尝试了file_get_contents而不是fopen,同样的问题。
我的PHP应用程序在没有BOM文件的UTF-8上运行。有人可以帮忙吗?我做错了什么?
答案 0 :(得分:1)
我想我明白你的意思。来自torcache.net的回复都是使用gzip
压缩的。如果您从浏览器下载该文件,该文件将自动解码,但如果您使用php执行相同操作,则会获得相同的文件,但仍会进行编码。您可以使用gzdecode对其进行解码。
file_put_contents($file_name, gzdecode(file_get_contents($link)));
答案 1 :(得分:0)
您的代码中存在一些错误。
首先,您尝试将字符串添加到没有括号的变量中。
$link = "https://torcache.net/torrent/9AE1726935FF9C08DF422CCE3C4445FC9484478B.torrent?title=[kat.cr]the.big.bang.theory.s08e24.720p.hdtv.x264.dimension.rartv"
下一个尝试通过https下载该文件。检查您的openssl是否已启用,以及allow_url_fopen
php.ini
答案 2 :(得分:0)
有三种方法可以解决您的问题:
启用openssl for https calls
使用curl并将ssl验证程序设置为0
将https替换为http以进行正常通话。
选项3是最简单的。