1

我正在使用pdflib动态创建pdf文档PHP,但由于某种原因,我收到的错误消息是这样的

Error: Couldn't open PDF file 'MJVQKFFGFEPBI.TMP' for writing (permission denied)

触发该行的错误是这个

if (!pdf_begin_document($this->p, $this->output_file, ($linearize ? 'linearize' : ''))) die('Error: ' . pdf_get_errmsg($this->p));

我的问题是如何获取权限被拒绝的目录的位置,或者此错误是否由任何其他原因触发?

相同的代码在我的服务器中有效,ubuntu 12.04但在我的服务器中无效12.10

4

2 回答 2

1

我刚刚从 PDFlib 的 Rainer Plöckl 那里得到信息,当您使用or时,您需要指定inmemory和/或 - 选项。默认情况下,pdflib 尝试在当前目录中打开一个临时文件,在该目录中他的 webserver-user 可能无权创建新文件。tempdirnamebegin_documentlinearizeoptimize

我遇到了同样的问题,optimize并通过使用以下代码规避了该问题:

pdf_begin_document($this->p, '', 'optimize=true tempdirname=' . sys_get_temp_dir());

之后一切正常。

您可以在http://www.pdflib.com/fileadmin/pdflib/pdf/manuals/PDFlib-9.0.4-API-reference.pdf#page=48找到文档的相关部分

于 2015-02-21T11:35:17.773 回答
0

sys_get_temp_dir()告诉您临时文件的目录名称。您可以使用它来创建一个临时文件:

$filename = tempnam(sys_get_temp_dir());

然后作为第二个参数传递$filename给。pdf_begin_document

于 2013-04-16T13:28:44.520 回答