php - 如何通过 PHP/readfile 提供 .dmg 文件?

标签 php http-headers readfile dmg

我无法从我的在线商店提供 .dmg。我将代码精简为以下内容以进行调试,但无论我得到一个零字节文件是什么:

header('Content-Type: application/x-apple-diskimage');   // also tried octet-stream
header('Content-Disposition: attachment; filename="My Cool Image.dmg"');
$size = filesize('/var/www/mypath/My Cool Image.dmg');
header('Content-Length: '.$size);
readfile('/var/www/mypath/My Cool Image.dmg');

同样的代码适用于我提供的许多其他文件类型:bin、zip、pdf。有什么建议么? Google 教授不是我的 friend 。

最佳答案

找到解决方案。罪魁祸首是 readfile() 并且可能与内存有关。代替 readfile() 行,我使用这个:

$fd = fopen ('/var/www/mypath/My Cool Image.dmg', "r");
while(!feof($fd)) {
    set_time_limit(30);
    echo fread($fd, 4096);
    flush();
}
fclose ($fd);

它现在可以正确处理所有文件类型,包括 DMG。

关于php - 如何通过 PHP/readfile 提供 .dmg 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10327135/

相关文章:

javascript - Node.JS中的createReadStream

python - 使用新行读取 csv 文件

php - mod_rewrite 和 apache clean 超链接

用于 Paypal Webhooks 的 PHP 监听器脚本

json - 是否应该在 Restful 错误响应中使用 HTTP 状态?

http - 在 "must-revalidate"中使用 "Cache-Control: no-cache, must-revalidate"是多么必要

PHP PDO Mysql 未加载。 extension在extensions.ini中,php_mysql.so存在,但是phpinfo只显示sqlite和dblib

php - 如何在 PHP 中将此字符串操作函数转换为 UTF-8 兼容?

Angularjs 和 HTTP header

python - Errno 13,尝试读取文件时权限被拒绝