PHP中使用echo輸出大型二進位字串到HTTP回應時,伺服器傳回了一個格式錯誤的回應
<p>我正在嘗試使用以下程式碼將一些大型二進位陣列輸出到HTTP回應:</p>
<pre class="brush:php;toolbar:false;">$bin = NULL;
$strLenToOutput = 8000;
for ($i=0; $i < $strLenToOutput; $i ) {
$bin .= pack("C", 1);
}
header('Content-Description: File Transfer');
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=test.bin");
header("Content-Length: filesize=" . strlen($bin));
header("Cache-Control: no-cache");
echo $bin;</pre>
<p>當要輸出的字串相對較短時,小於等於8000,上述程式碼運作正常。但是如果字串長度增加到8001,我會在Postman中收到以下錯誤:</p>
<pre class="brush:php;toolbar:false;">Parse Error: The server returned a malformed response</pre>
<p>我正在運行PHP7.4在Apache V2.4.46上,所有設定都是預設的。 </p>
<p>我在這裡做錯了什麼?是PHP程式碼還是Apache2上的一些設定需要更改? </p>
<p>請給予指導,提前感謝。 </p>
<p>更新:如果我刪除設定檔長度的以下行,PHP程式碼將正常運作。我猜問題是我應該讓PHP自己處理這部分。 </p>
<pre class="brush:php;toolbar:false;">//header("Content-Length: filesize=" . strlen($bin));</pre></p>