如何使用 mPDF 和 CodeIgniter 保存 PDF 文件

Posted

技术标签:

【中文标题】如何使用 mPDF 和 CodeIgniter 保存 PDF 文件【英文标题】:How to save PDF file with mPDF and CodeIgniter 【发布时间】:2016-05-24 10:13:05 【问题描述】:

我正在使用 CodeIgniter 3 和 mPDF 来生成 PDF 文件。 在我的控制器中,我需要指定文件路径来存储 pdf 文件。

目前,这段代码在我的本地服务器上运行良好:

$pdfFilePath = FCPATH."/raports/invoice_".$data['nr'].".pdf";

但不适用于生产(托管服务器)。 当我绕过时,我已将 FCPATH 替换为 $_SERVER['DOCUMENT_ROOT']

$pdfFilePath = $_SERVER['DOCUMENT_ROOT']."raports/invoice_".$data['nr'].".pdf";

此解决方案适用于生产环境(但不适用于我的本地服务器),因此每次我想上传新版本时都需要更改它。

错误信息说:

Message: fopen(): open_basedir restriction in effect. 
fopen  failed to open stream: Operation not permitted

任何可以在本地和生产服务器上运行的解决方案?

【问题讨论】:

$_SERVER['DOCUMENT_ROOT'] 在本地的值是多少,它的期望值是多少?还要提及您的本地和服务器操作系统。 你在使用 apache 吗? 我的本地开发平台是 php 5.6.20 + Apache on Synology Disk Station (DSM 6.0) @Tikky 如果控制器可以发布完整的代码 【参考方案1】:

您可能会通过某种 if 语句或类似的东西来解决这个问题,但 CI 中还有另一个很酷的功能。

在大多数情况下,您可能有多个配置设置,它们在生产、测试​​和开发之间是不同的。 因此,Codeigniter 可能会根据您的平台运行的环境加载不同的配置值。

如果你使用 apache - 激活 SetEnvIf(如果它还没有)

在你的 htaccess 中加入类似的东西

SetEnvIf Host localhost$ CI_ENV=development
SetEnvIf Host testhost$ CI_ENV=testing
SetEnvIf Host productionhost$ CI_ENV=production

之后只需在您的 application/config/ 文件夹中创建名为 development、testing 和 production 的三个文件夹 如果您将不同的配置文件放在此文件夹中 - ci 会根据您当前的工作环境访问它

请关注CI Documentation了解更多信息

【讨论】:

以上是关于如何使用 mPDF 和 CodeIgniter 保存 PDF 文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 mPDF 错误在 codeigniter 3 中将 html 导出并下载为 pdf 错误:找不到类“Mpdf\Mpdf”

Codeigniter - mPDF 导出空白页

在 codeigniter 中使用 MPDF 设置格式视图导出 PDF

mPDF 库不适用于 php7.2 codeigniter

动态 PHP 变量不适用于使用 mPDF 的 codeigniter php 视图文件

MPDF PAGENO在codeigniter中无法在pdf中显示页码