【问题标题】:Fatal error: Switch statements may only contain one default clause in mpdf.php致命错误:switch 语句在 mpdf.php 中可能只包含一个默认子句
【发布时间】:2017-11-08 20:01:21
【问题描述】:

我正在使用 mPDF,它在 localhost 上运行良好。我将项目上传到实时服务器,但它没有正确生成 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 语句只能包含一个默认子句 /customers/d/e/a/..URL..GO..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 中提供了很好的支持。 这就是我选择旧版本的原因

【问题讨论】:

  • 您的实时服务器和本地主机上有哪些 php 版本?
  • 在我的服务器上,我有 PHP 版本 7.1 本地主机 PHP 版本 5.6.31
  • 另外,您使用的是最新的 mpdf composer 包吗?请告诉您正在使用的确切 mpdf 版本。
  • 我使用的是 mPDF 5.7,它不是作曲家版本。我想在我的 pdf 中使用中文字符,它在 5.7 中提供了很好的支持。这就是我选择旧版本的原因
  • 谢谢你,Ivan,我也在编辑我的问题,以便更容易理解。

标签: php mpdf


【解决方案1】:

很遗憾,旧的mpdf 版本不支持 PHP7 (mpdf issue)。您可以:

  1. 切换到实际的 mpdf 版本并使用 this workaround 获取中文字体;
  2. 或将您的实时服务器 PHP 更改为 5.6 (PHP RFC multiple default cases syntax error);
  3. 或者自己修复mpdf源中的这个开关问题(人们讨论了可能的解决方案in this hhvm issue),你只需要删除default语句之一。

【讨论】:

  • 我删除了这个,但仍然有同样的问题.. case 'A4': default: {$format = array(595.28,841.89);休息;}
  • 我按照您建议的中文使用它,我正在使用旧版本
  • 有而且永远不会有 PHP 5.7 版本?
  • @JanSlabon,当然没有PHP 5.7的版本,打错了,我的意思是PHP 7。谢谢指点,我会编辑一个答案。
【解决方案2】:

较早的帖子,但这可能对某人有所帮助,我在将网站从 PHP 5.6 迁移到 PHP 7 时遇到了同样的问题,我在 https://github.com/kbs1/mpdf-5.7-php7 找到了适合我的 MPDF 更新版本

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-15
    • 2011-06-06
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多