php – DomPDF渲染大型HTML文件导致500错误
我正在使用最新版本的DomPDF(0.6.0 beta 3).
PHP版本是5.2.17. 不幸的是,我在共享主机帐户上升级PHP并且类似的操作不可用.我也无法访问apache错误日志,我认为这不会对你有用. 我已将PHP的memory_limit设置为2048M,将max_execution_time设置为999.虽然我不知道它们是否已生效.我认为它们实际上并不重要,因为我觉得DomPDF没有超时或耗尽内存. 500错误似乎发生在请求页面后10秒,当我尝试生成一个页面较少的PDF时,脚本需要更长时间(12-15秒)但成功结束. 我有一个72.3kb大的HTML文件,只有一个小的HTML表. (事实上??,删除带有表格的页面无助于解决问题.)PDF应该会产生大约35页. 经过大量的挖掘后,我发现错误发生在第30页 – 第31页,在reflow函数内的page_frame_reflower.cls.php中的以下代码行中: // Render the page $this->_frame->get_renderer()->render($child); 当在每个循环(页面)上回显memory_get_usage时,值似乎保持相当一致,低于可用内存的5%. 在$this-> _frame-> get_renderer()上使用get_class我能够确定问题函数是Renderer :: render(). 不幸的是,我没有简单的方法继续使用我当前的方法进行调试. Renderer :: render()方法不允许我将参数变量添加到参数中,因为它需要与它的父函数兼容. 任何人都对我有任何帮助,你看到我遗失的任何东西 – 你能指出我正确的方向来解决这500个错误吗? 编辑:我已经从HTML文档中删除了内联PHP的所有用法,它似乎没有改变任何东西. 编辑2:文档太大而无法完全通过Tidy,但最多50000字节没有错误. 编辑3:PHP错误日志记录已打开.我可以通过调用错误的方法名称和其他东西来生成错误.这些错误出现在屏幕上.实际上,即使我在问题方法之前导致无限循环,我也会得到PHP最大执行时间到达屏幕上的错误.但问题区域显示500内部服务器错误页面. 编辑4:我删除了所有的CSS,并且生成的PDF没有样式.现在我们到了某个地方.我将慢慢添加CSS,我可以缩小问题代码的范围.谢谢,@ Liv. 编辑5:我将CSS缩小到问题的萌芽:h1规则.我在h1标??签上使用了背景图片.所以从我原来的问题来看,我所要做的就是从h1标签中删除背景图像,以使PDF正常工作.使用背景图像处理很多元素是DomPDF的一个问题吗? 编辑6:这是HTML文件:http://www.pickering-mcaloon.com/wp-content/uploads/2013/03/test2.html我不得不删除内容(不是我的).我用DomPDF测试了这个版本的HTML并得到了500个服务器错误.我的标题图片是25.1 kb.应该注意的是,每个页面的页脚也使用背景图像,它工作正常.在HTML的这个副本中,删除1个“章节”部分允许DomPDF完成生成PDF. 编辑7:当我第一次遇到问题时,我使用了memory_get_usage并且在循环的顶部调用了Renderer :: render(),每次它显示略有不同的用法,但是低于最大值的6%,这是设定为2048M.我不相信这个问题是超时错误或内存错误,因为我可以在调用render之前产生这些类型的错误并将PHP错误打印到屏幕上.此外,运行约10秒后出现500错误 – 当PDF工作时,大约需要15-20秒.所以暂停不太可能.内存错误,也许如果是这样,为什么不打印错误,如果内存在调用渲染之前溢出. 编辑8:我将用作h1标签的背景图像转换为来自PNG的JPG,将其大小从25.1kb缩小到2.6kb并正确生成PDF.这可能是一个内存问题. PHP应该生成一个错误并显示给我,但事实并非如此. 解决方法
我面临同样的问题,仍然在努力.我正在使用Dompdf并尝试转换仅33KB的HTML页面,但我得到500内部服务器错误.
我的html页面下有多个外部样式表,包括bootstrap css.但是当我删除bootstrap css时,dompdf工作正常. 删除此行可能会对您有所帮助 但我不知道应该做什么才能将Bootstrap.css包含到dompdf以及为什么bootstrap样式会导致dompdf出错. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |