我有一个表格,用户可以填写他们的详细信息和序列号,然后下载软件安装程序,并将其命名为输入。例如serial.exe
提交表单后,我检查文件是否存在,然后尝试下载文件:
$directory = get_template_directory();
$file = $directory . '/filename.exe';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.$Serial.'.exe"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}
这会导致加载冻结,此代码下方未加载任何内容,但我看不到任何错误,也没有生成文件。
如果我将文件更改为.png,则代码有效。
我还将相同的代码复制到了wordpress之外的php页面中,相同的代码可以根据需要运行并下载文件。
Wordpress是否有可能由于其.exe而以某种方式阻止了readfile()请求?
编辑:
文件大小而不是文件类型似乎有问题。
一个小的.exe文件可以正常工作并已正确下载。