我正在使用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
答案 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
作为第二个参数。