【问题标题】:mpdf change temp path (composer package)mpdf 更改临时路径(作曲家包)
【发布时间】:2015-02-16 09:01:16
【问题描述】:

我已经通过 composer 安装了mpdf/mpdf

在开发环境中一切正常,但是在生产/登台中,我得到一个权限错误。

file_put_contents(\/.../ttfontdata\/dejavusanscondensed.GSUBGPOStables.dat): failed to open stream: Permission denied' in .../shared\/vendor\/mpdf\/mpdf\/classes\/ttfontsuni.php:999\nStack trace:\n#0 [internal function]: Illuminate\\Exception\\Handler->handleError(2, 'file_put_conten...', '...', 999, Array)\n#1 

根据 mpdf 文档,我需要为我的存储文件夹定义路径:

// Tried this at top of index.php before require bootstrap/autoload.php
define("_MPDF_TEMP_PATH", dirname(__FILE__) . '/../app/storage/mpdf/');

// Tried this just before creating a new mpdf
define("_MPDF_TEMP_PATH", storage_path() . '/mpdf/');

我使用 Laravel 作为框架 - 而 mpdf 不会使用我指定的临时文件夹

【问题讨论】:

    标签: php laravel permissions mpdf


    【解决方案1】:

    我知道这是一个老问题,但我遇到了同样的问题。就像您最初建议的那样,您可以在加载 mPDF 库之前定义临时路径,但还需要定义字体数据路径。

    我将此添加到我的 /bootstrap/autoload.php 文件的顶部:

    define("_MPDF_TEMP_PATH", __DIR__.'/../storage/framework/pdf/');
    define("_MPDF_TTFONTDATAPATH", __DIR__.'/../storage/framework/pdf/fonts/');
    

    此外,我必须手动创建/pdf/pdf/fonts 目录。

    可能有一种更简洁的方法可以做到这一点,但这是一个快速修复。

    【讨论】:

    • 在生产部署中运行良好。谢谢@jon__o
    • 关于 Lumen 6.X 和 mpdf 8.x 的任何提示?这两个常量不再使用,应该定义“tempDir”......不知何故......
    【解决方案2】:

    您是否为以下文件夹设置了权限?

    • /ttfontdata/
    • /tmp/
    • /graph_cache/

    以下是安装指南:http://mpdf1.com/manual/index.php?tid=509

    【讨论】:

    • ttfontdata 位于供应商,可以写给供应商吗?
    猜你喜欢
    • 2014-10-22
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 2016-12-09
    • 2018-11-21
    • 1970-01-01
    • 2018-09-02
    相关资源
    最近更新 更多