【问题标题】:MPDF generates http 404MPDF 生成 http 404
【发布时间】:2022-05-18 19:34:33
【问题描述】:

我在我的开发机器上使用 PHP 7.3。我已经用 composer 安装了最新版本的 MPDF。我在我的 MVC 框架(Phalcon 3.4)中有一个动作,我在其中创建了一个 Mpdf 对象。在开发机器上它可以工作。我在屏幕上看到我的 PDF。这是我的操作代码。

public function printAction()
{
    $this->view->disable();
    ....
    //var_dump(class_exists('\Mpdf\Mpdf', true)); --> output: true
    //exit;
    $mpdf = new \Mpdf\Mpdf(['debug' => true]);
    $html = '...';
    $mpdf->WriteHTML($html);
    $mpdf->Output();
}

我将代码上传到服务器并进行了“作曲家更新”。当我运行代码时,我得到一个 HTTP 404 响应。我在创建 mPDF 的对象之前添加了一个“退出”语句,并且 HTTP 404 消失了。

$mpdf = new \Mpdf\Mpdf(['debug' => true]);

这条线似乎是问题所在。 apache2 错误日志和访问日志中都没有写入任何内容。控制器中的其他请求完美执行。

服务器使用 PHP 7.0。已加载所有扩展。

我用 class_exists 检查了 Mpdf 类是否存在。它输出“真”。

我监督了什么?

【问题讨论】:

  • 请分享更多细节。另外,解释一下这个问题与 Composer 本身有何关系
  • @NicoHaase 我用更多代码更新了我的问题。我不知道,因为这是我为这个项目使用 composer 安装的第一个库。
  • mPDF 永远不会自己发出 404 HTTP 代码。不过,还需要更多信息——它是服务器 404 吗?还是 Phalcon 404?你能在代码中进一步指出错误吗?
  • 这是一个 apache 404。它记录在 access.log 中。它应该在类的构造函数中。
  • mPDF 本身永远不会导致 apache 404 HTTP 代码。在别处寻找它的原因。错误日志中没有任何内容?

标签: php composer-php mpdf


【解决方案1】:

在库 mPDF 中,抛出异常但未被捕获。它导致了 404 错误,而不是 HTTP 500。

库没有临时文件夹的写入权限。

【讨论】:

    【解决方案2】:

    对于那些发生在这个话题上的人,我的问题是对这个样式表的引用(在我的本地机器上工作正常,但从服务器调用时却不行):

    <link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic">
    

    这导致以下输出: string(15) "HTTP 错误:404" 日志中没有错误(尽管从技术上讲,它是一个文本字符串,而不是发送到浏览器的实际 HTTP 404)。

    显然,我有一些代码以特定方式调用 PDF 的创建,但无论如何:检查你在做什么,然后关闭一切,直到它不再中断。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 2011-06-04
      • 1970-01-01
      • 1970-01-01
      • 2014-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多