0

我正在尝试使用我的 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
4

1 回答 1

0

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

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

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

我假设您必须创建然后调整“临时”目录的权限 - 或使用“世界可写”位置,例如/tmp.

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

于 2013-07-30T21:58:10.037 回答