我正在尝试使用 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
最佳答案
Can anyone tell me why it doesn't work on the hosting provider and how I can fix this issue. I am under the impression that it is a security issue.
我的猜测是您根本没有所需目录的写入权限。
您在当前工作目录 (.
) 中创建临时文件。根据您的托管提供商和 HTTP 服务器配置,当前工作目录不一定是您认为的那样,也不是可写的。特别是因为您的程序可能会以 www 或 nobody 身份运行。
我假设您必须创建“临时”目录,然后调整其权限,或者使用“全局可写”位置,例如 /tmp
。
最后,您的程序中有一个“向上”移动的相对路径:./../../reports/TEST.pdf fill_form
这几乎没有机会在您的托管...
关于mysql - 如何使用 pdftk fill_form 而不写入临时文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17958161/