我在 php 中接收二进制数据作为证书内容,我想将其下载到浏览器。使用证书查看器打开它时,我总是收到此消息:
hex(19).pfx Could not display 'hex(19).pfx' Reason: Unrecognized or unsupported data.
这个二进制数据是正确的,我立即把它放在服务器上的一个文件中,它制作了一个有效的证书。
我认为问题出在两个地方:
命令的输出
exec('ssh root@192.168.0.137 "echo '.$bindata.' | xxd -p -r | tr -d \'\n\' "',$output);
while$bindata
来自在 bash 中制作证书 pfx 文件后的转换xxd -p
或者它在标题中,有丢失或添加:
header("Content-Description: File Transfer"); header("Content-Type: application/octet-stream"); header("Content-Transfer-Encoding: binary"); header("Content-Disposition: attachment; filename=hex.pfx"); header('Content-Length: '. strlen($output[0])); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); echo $output[0]; exit();
怎么了?