如何使用 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 设置格式视图导出 PDF