php – DomPDF渲染大型HTML文件导致500错误

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了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工作正常.

删除此行可能会对您有所帮助
– > link tyPE =“text / css”rel =“stylesheet”href =“/ bootstrap.css”

但我不知道应该做什么才能将Bootstrap.css包含到dompdf以及为什么bootstrap样式会导致dompdf出错.

脚本宝典总结

以上是脚本宝典为你收集整理的php – DomPDF渲染大型HTML文件导致500错误全部内容,希望文章能够帮你解决php – DomPDF渲染大型HTML文件导致500错误所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。