DOMPdf 不在生产服务器上生成 PDF,只显示代码
DOMPdf not generating PDF on production server, only showing code
我在本地服务器上从 HTML 生成了一个可用的 DOMPdf。我将它上传到我的生产服务器,从我的第一次测试来看它似乎工作正常。几天前,我开始收到有关 PDF 生成仅显示符号和字母的报告。所以,我检查并做了一些测试,显然问题出在 DOMPdf 库、PHP fpm 和 CodeIgniter 之间。
生产服务器使用:
- Ubuntu 20.04.2 LTS
- 阿帕奇 2.4.41
- PHP 7.4.3(Apache 使用 FPM)
网站使用:
- CodeIgniter 4.1.1
- DomPDF 1.0.2
所以,在玩了一会儿之后我注意到,如果我在 CodeIgniter 之外使用 PDF 生成代码,它可以正常工作,但是如果我尝试在 CodeIgniter 实例中使用它,我得到这个:
我的理论是,这基本上是一个 header 问题,但我不确定是什么原因造成的。
最后我和 CodeIgniter 论坛的人一起检查了它,我得到了两个可能的解决方案。显然这是一个 header/buffer 问题。
因此,有两个选项可以解决此问题:
选项 1 - 删除 Content-Type
的特定 header
//in controller method
$this->response->removeHeader('Content-Type');
选项 2 - 在代码末尾添加 exit()
命令
$dompdf->stream("test.pdf",array('Attachment'=>0));
exit();
我在本地服务器上从 HTML 生成了一个可用的 DOMPdf。我将它上传到我的生产服务器,从我的第一次测试来看它似乎工作正常。几天前,我开始收到有关 PDF 生成仅显示符号和字母的报告。所以,我检查并做了一些测试,显然问题出在 DOMPdf 库、PHP fpm 和 CodeIgniter 之间。
生产服务器使用:
- Ubuntu 20.04.2 LTS
- 阿帕奇 2.4.41
- PHP 7.4.3(Apache 使用 FPM)
网站使用:
- CodeIgniter 4.1.1
- DomPDF 1.0.2
所以,在玩了一会儿之后我注意到,如果我在 CodeIgniter 之外使用 PDF 生成代码,它可以正常工作,但是如果我尝试在 CodeIgniter 实例中使用它,我得到这个:
我的理论是,这基本上是一个 header 问题,但我不确定是什么原因造成的。
最后我和 CodeIgniter 论坛的人一起检查了它,我得到了两个可能的解决方案。显然这是一个 header/buffer 问题。
因此,有两个选项可以解决此问题:
选项 1 - 删除 Content-Type
//in controller method
$this->response->removeHeader('Content-Type');
选项 2 - 在代码末尾添加 exit()
命令
$dompdf->stream("test.pdf",array('Attachment'=>0));
exit();