php文件500 html正常,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应该生成一个错误并显示给我,但事实并非如此.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值