mPDF 从不在 Ubuntu / Apache / PHP7 堆栈上呈现
mPDF never renders on Ubuntu / Apache / PHP7 stack
我正在使用 mPDF 库将 HTML 页转换为 PDF。
这个库在我的本地机器和开发服务器上工作得很好 运行 PHP 5.6.
然而,在亚马逊新提供的 Ubuntu 16 盒子上,Apache 2.4.18 和 PHP 7 我无法让它工作。
症状是永远不会生成 PDF - 浏览器一直在旋转,最终我不得不退出浏览器以退出该过程。我没有收到任何错误消息。
我已经通过我的脚本来查看进程在哪里卡住了,它在这个方法上:
$mPDF->WriteHtml($html);
我试过将一个非常简单的 HTML 字符串传递给函数,例如:
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<b>Hello!</b>
</body>
</html>
这确实有效。
所以我想知道 HTML 的质量。 运行 我的 HTML 到 W3 Validator 揭示了一些我现在已经修复的错误,但这并没有解决我的问题。
所以我现在想知道 HTML 的大小 - 这是一个正在呈现的大页面,通常在 PDF 上超过 20 页。
我的脚本为进程分配了大量内存:
ini_set('memory_limit', '1024M');
并且服务器总共有8G内存。
我应该在服务器配置中检查哪些可能会影响 mPDF 的内容吗?
感谢期待。
编辑
在进一步调试并将 HTML 剥离回越来越小的部分后,我已经能够生成 PDF - 但它 非常 慢。
mPDF 似乎也找不到图像资产,所以我在 PDF 上看到了损坏的图像符号。我想知道这个服务器设置是否有一个奇怪的 webroot / basePath 这意味着 mPDF 无法找到它正在寻找的资产?
编辑 2
想知道这个问题现在是否与 mPDF not rendering images (mPDF error: IMAGE Error Could not find image file)
重复
我遇到了加载缓慢和缺少图像的相同问题
因此服务器有 IP 防火墙,mPDF 使用 file_get_contents()
将 PDF 的资产引用为外部资产,包括域名:
file_get_contents('http://server.com/asset/anAsset.jpg');
这意味着请求从服务器发出,返回到它并被防火墙拒绝。
删除防火墙解决了我们的问题。
我仍然很想知道 mpdf 是否可以在本地引用资产。其 basePath
属性 的文档似乎表明它始终使用完整域 URL:
https://mpdf.github.io/reference/mpdf-functions/setbasepath.html
我正在使用 mPDF 库将 HTML 页转换为 PDF。
这个库在我的本地机器和开发服务器上工作得很好 运行 PHP 5.6.
然而,在亚马逊新提供的 Ubuntu 16 盒子上,Apache 2.4.18 和 PHP 7 我无法让它工作。
症状是永远不会生成 PDF - 浏览器一直在旋转,最终我不得不退出浏览器以退出该过程。我没有收到任何错误消息。
我已经通过我的脚本来查看进程在哪里卡住了,它在这个方法上:
$mPDF->WriteHtml($html);
我试过将一个非常简单的 HTML 字符串传递给函数,例如:
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<b>Hello!</b>
</body>
</html>
这确实有效。
所以我想知道 HTML 的质量。 运行 我的 HTML 到 W3 Validator 揭示了一些我现在已经修复的错误,但这并没有解决我的问题。
所以我现在想知道 HTML 的大小 - 这是一个正在呈现的大页面,通常在 PDF 上超过 20 页。
我的脚本为进程分配了大量内存:
ini_set('memory_limit', '1024M');
并且服务器总共有8G内存。
我应该在服务器配置中检查哪些可能会影响 mPDF 的内容吗?
感谢期待。
编辑
在进一步调试并将 HTML 剥离回越来越小的部分后,我已经能够生成 PDF - 但它 非常 慢。
mPDF 似乎也找不到图像资产,所以我在 PDF 上看到了损坏的图像符号。我想知道这个服务器设置是否有一个奇怪的 webroot / basePath 这意味着 mPDF 无法找到它正在寻找的资产?
编辑 2
想知道这个问题现在是否与 mPDF not rendering images (mPDF error: IMAGE Error Could not find image file)
重复我遇到了加载缓慢和缺少图像的相同问题
因此服务器有 IP 防火墙,mPDF 使用 file_get_contents()
将 PDF 的资产引用为外部资产,包括域名:
file_get_contents('http://server.com/asset/anAsset.jpg');
这意味着请求从服务器发出,返回到它并被防火墙拒绝。
删除防火墙解决了我们的问题。
我仍然很想知道 mpdf 是否可以在本地引用资产。其 basePath
属性 的文档似乎表明它始终使用完整域 URL:
https://mpdf.github.io/reference/mpdf-functions/setbasepath.html