致命错误:switch 语句在 mpdf.php 中可能只包含一个默认子句



我正在使用mPDF,它与本地主机一起工作正常。我将项目上传到实时服务器,但它无法正确生成pdf。

<?php
// HTML ommited
$body = ob_get_clean();
include ("mpdf/mpdf.php");
$mpdf = new mPDF('+aCJK', 'A4', '', '', 0, 0, 0, 0, 0, 0);
$mpdf->WriteHTML($body);
$mpdf->Output('SaveToPDF.pdf', 'D');

在顶部,我放置了错误显示代码。要查看错误出了什么问题,我有以下错误。

致命错误:switch 语句可能只包含一个默认子句 /客户/d/e/a/....网址..去。。HERE/mpdf.php 在第 1432 行

我在我的本地主机上使用 PHP 版本 5.6.31,在实时我正在使用 one.com 在那里我可以切换到不同的 PHP 版本,我尝试了所有版本。 即 5.6、7.0、7.1、7.2 测试版

我使用的是 mPDF 5.7,它不是作曲家版本。我想使用 我的 PDF 的中文字符,它在 5.7 中提供了很好的支持。 这就是我选择旧版本的原因

不幸的是,旧的mpdf版本不支持PHP7(mpdf问题)。您可以:

  1. 切换到实际的 mpdf 版本,并将此解决方法用于中文字体;
  2. 或者将你的实时服务器PHP更改为5.6(PHP RFC多个默认案例语法错误);
  3. 或者在自己mpdf源中修复此开关问题(人们在此hhvm问题中讨论了可能的解决方案),您只需要删除其中一个default语句即可。

较旧的帖子,但这可能有助于某人,我在将站点从 PHP 5.6 移动到 PHP 7 时遇到了同样的问题,我找到了 MPDF 的更新版本,它对我来说 https://github.com/kbs1/mpdf-5.7-php7

如果你已经从 php5 迁移到 php7,那么你可以在 mpdf.php 文件中使用以下补丁。

https://github.com/franzliedke/wp-mpdf/commit/9dc489215fbd1adcb514810653a73dea71db8e99

从上面的 URL 下载原始文件并将其上传到您的目录。对我来说,它非常有效。

最新更新