服务器php只显示文本,服务器上的php echos文件是文本而不是二进制文件
我編寫了一個PHP頁面,它讀取一個文件,并在添加了一些頭文件后對其進行回顯:
header('Content-disposition: filename="' . $fname . '"');
header('Pragma: no-cache');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header("Content-type: $AttachFileType");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($ffullname));
echo file_get_contents($ffullname);
這段代碼在本地測試中做得很好,但是當移植到服務器時,響應并不像預期的那樣。例如,當我想要檢索一個PNG文件時,我在本地測試中得到以下圖像:
當服務器測試輸出此項時:
正如我所調查的,它們之間唯一的區別是服務器響應上的另外4個頭。本地測試響應頭:
Cache-Control: must-revalidate, post-check=0, pre-check=0
Connection: Keep-Alive
Content-disposition: filename="attachment_hrmstotal_generalskills_6.png"
Content-Length: 2401
Content-Transfer-Encoding: binary
Content-Type: png
Date: Wed, 23 May 2018 04:45:02 GMT
Expires: 0
Keep-Alive: timeout=5, max=97
Pragma: public
Server: Apache/2.4.27 (Ubuntu)
服務器響應頭是:
Cache-Control: must-revalidate, post-check=0, pre-check=0
Connection: keep-alive
Content-disposition: filename="attachment_hrmstotal_generalskills_1.png"
Content-Length: 184450
Content-Transfer-Encoding: binary
Content-Type: png
Date: Wed, 23 May 2018 04:40:56 GMT
Expires: 0
Pragma: public
Server: nginx/1.8.0
Strict-Transport-Security: max-age=31536000
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
最后四個標題是區別。問題是什么,原因是什么,如何解決?
總結
以上是生活随笔為你收集整理的服务器php只显示文本,服务器上的php echos文件是文本而不是二进制文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 这次更新守护者版本会免费洗点吗
- 下一篇: 半路兄弟剧情介绍