错误:无法打开PDF文件'MJVQKFFGFEPBI.TMP'进行写入(权限被拒绝)

时间:2013-04-16 13:19:33

标签: php ubuntu permissions pdflib

我正在使用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

2 个答案:

答案 0 :(得分:1)

我刚刚从PDFlib获得了RainerPlöckl的信息,当您使用inmemory时,您需要为tempdirname指定begin_document和/或linearize - 选项}或optimize。默认情况下,pdflib会尝试在当前目录中打开一个临时文件,其中webserver-user可能无权创建新文件。

我与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

找到文档的相关部分

答案 1 :(得分:0)

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

$filename = tempnam(sys_get_temp_dir());

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