【问题标题】:How can I use pdfk fill_form without writing to a temp file如何在不写入临时文件的情况下使用 pdf 填写表格
【发布时间】:2013-07-30 21:55:20
【问题描述】:

我正在尝试使用我的 mysql 数据库中的数据填充 pdf 报告。它在我的本地机器上运行良好,但是当我将它上传到 www.000webhost.com 时,没有生成 pdf 文档。

我知道每次单击打印报告时文档都会将临时文件写入我的文件夹。谁能告诉我为什么它在托管服务提供商上不起作用以及如何解决此问题。我的印象是这是一个安全问题。

我必须写一个临时文件吗?为什么我不能使用 $fdf 变量而不是临时文件来填充报告?

$fdf_fn= tempnam( '.', 'fdf' );
$fp= fopen( $fdf_fn, 'w' );
if( $fp ) {
    fwrite( $fp, $fdf );
    fclose( $fp );

//attachment for view
header(   'Content-type: application/pdf' );
header(   'Content-disposition: inline; filename=TEST.pdf');

passthru(   "pdftk ./../../reports/TEST.pdf fill_form ". $fdf_fn.' output - flatten' );

unlink( $fdf_fn ); // delete temp file

【问题讨论】:

    标签: mysql pdf pdf-generation fpdf pdftk


    【解决方案1】:

    谁能告诉我为什么它不适用于托管服务提供商以及如何 我可以解决这个问题。我的印象是这是一种安全 问题。

    我的猜测是你根本没有所需目录的写权限。

    您在当前工作目录 (.) 中创建临时文件。根据您的托管服务提供商和 HTTP 服务器配置,当前工作目录不是您认为的或可写的。特别是因为您的程序可能会以 wwwnobody 身份运行。

    我假设您必须创建并调整“临时”目录的权限——或使用“全局可写”位置,例如 /tmp

    最后,您的程序中有一条“向上”移动的相对路径:./../../reports/TEST.pdf fill_form 这在您的主机上有效的可能性很小...

    【讨论】:

    • 我做了一些进一步的研究,它说虚拟主机自动禁用了 passthru 功能。如何启用此功能?
    • @user2635901 由于这是一个更具体的话题,我认为您应该 (1) 检查是否已经回答,(2a) 如果是,请在此处回答自己通过提供相关讨论的链接,(2b) 如果没有发布新问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多