首页 新闻 会员 周边

php readfile() 下载文件失败

0
悬赏园豆:20 [已解决问题] 解决于 2022-01-07 13:41

代码如下,在正式环境可以下载其他网站文件,但本地虚拟机或测试站不行。或者说可以下载生成文件,但文件都是损坏的,大小都是0kb

header("Content-Type: application/force-download");
header('Content-Description: File Transfer');
header("Content-Disposition: attachment; filename=".(文件名));
readfile(远程文件路径);

网上查的openssl、allow_url_fopen配置都有。

有大神指点下吗?

问题补充:

感觉是网络问题,但直接用命令行wget下载文件,可以下载成功。
远程文件会301跳转,感觉应该跟这个有关系。

阅尽三千的主页 阅尽三千 | 菜鸟二级 | 园豆:332
提问于:2021-12-23 15:16

用代理看看本地是怎么请求远程文件的

lastmemory 2年前

@lastmemory: 确定是网络问题了,远程服务器上都没收到请求

阅尽三千 2年前
< >
分享
最佳答案
0

找到问题了,php版本有点老,编译的时候添加了--with-curlwrappers配置。导致下载为空。要重新编译下php

阅尽三千 | 菜鸟二级 |园豆:332 | 2021-12-24 13:31

看吧,让你对比各种插件配置,还是我聪明,还不给我豆豆

福气满满好运连连 | 园豆:60 (初学一级) | 2022-01-07 13:29

@小小解忧草: 给你给你都给你

阅尽三千 | 园豆:332 (菜鸟二级) | 2022-01-07 13:40

@阅尽三千: 这还差不多,哈哈

福气满满好运连连 | 园豆:60 (初学一级) | 2022-01-07 14:01
其他回答(3)
0

爱莫能助~,但是我觉得你可以对比一下正式环境跟测试环境系统差别以及插件配置

收获园豆:20
福气满满好运连连 | 园豆:60 (初学一级) | 2021-12-23 15:21

环境配置比对过了,没什么不同的

支持(0) 反对(0) 阅尽三千 | 园豆:332 (菜鸟二级) | 2021-12-23 15:22
0

有权限吗,linux吗

大咸菜· | 园豆:204 (菜鸟二级) | 2021-12-23 15:27

什么权限?目录权限吗?

下载通过浏览器直接下载到本地的啊

支持(0) 反对(0) 阅尽三千 | 园豆:332 (菜鸟二级) | 2021-12-23 15:29

@阅尽三千: ap​​plication/octet-stream 试试这个 类型

支持(0) 反对(0) 大咸菜· | 园豆:204 (菜鸟二级) | 2021-12-23 15:42

@大咸菜: 不行,下载生成的文件还是空的

支持(0) 反对(0) 阅尽三千 | 园豆:332 (菜鸟二级) | 2021-12-23 15:48
0

个人理解:代码内文件下载基本都是请求的形式;你用 curl -v 看下整个请求干了些啥;两个环境对比下

〆灬丶 | 园豆:2287 (老鸟四级) | 2021-12-23 15:59

请求好像没发出去,远程服务器端nginx没有访问的日志

支持(0) 反对(0) 阅尽三千 | 园豆:332 (菜鸟二级) | 2021-12-23 16:44

@阅尽三千:

本地虚拟机请求好像没发出去?
正式环境呢?
支持(0) 反对(0) 〆灬丶 | 园豆:2287 (老鸟四级) | 2021-12-23 17:25

@韆: 找到问题了,php版本有点老,编译的时候添加了--with-curlwrappers配置。导致下载为空。要重新编译下php

支持(0) 反对(0) 阅尽三千 | 园豆:332 (菜鸟二级) | 2021-12-24 13:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册