我有一个使用mPDF(v6.0.0,http://mpdf1.com)动态生成PDF的Web应用程序。虽然Apache和PHP的一切都运行良好但我在使用nginx + HHVM时遇到了一些麻烦。
问题是nginx拒绝设置正确的Content-Type标头,这将是application / pdf。相反,它保留设置text / html,无论我在代码或环境配置中做什么/更改,结果是文档的二进制数据显示在浏览器窗口中。我在没有任何参数的情况下使用mPDF的Output()方法,因此PDF应该内联呈现:http://mpdf1.com/manual/index.php?tid=125
查看源代码(mpdf.php的第8295行)一切都应该没问题:https://raw.githubusercontent.com/mpdf/mpdf/v6.0.0/mpdf.php
我已经确保“application / pdf”在mime.types文件中。将location指令设置为以.pdf结尾的所有URI“add_header Content-Type application / pdf”也不起作用。
这是cURL输出,它引导我正确的方向:
HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Date: Thu, 10 Dec 2015 08:13:29 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 1571243
Connection: keep-alive
X-Powered-By: HHVM/3.10.1
Vary: Accept-Encoding
Content-disposition: inline; filename="mpdf.pdf"
Pragma: public
Cache-Control: no-cache, max-age=0, must-revalidate, no-transform
Expires: Sat, 26 Jul 1997 05:00:00 GMT
Last-Modified: Thu, 10 Dec 2015 08:13:29 GMT
有任何想法或建议吗?谢谢!
原来HHVM就是问题所在。在同一个Header上多次使用header()
方法时似乎存在错误。切换到PHP-FPM之后就好了。我还必须确保HOME
变量(在PHP的$_SERVER
数组中)与web应用程序文件的acutal目录同步。