1

でドキュメントpdflibを動的に作成するために使用していますが、何らかの理由でエラーメッセージが表示されますpdfPHP

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 から情報をinmemory入手しtempdirnameましbegin_documentた。デフォルトでは、pdflib は、webserver-user が新しいファイルを作成する権限を持っていない可能性がある現在のディレクトリで一時ファイルを開こうとします。linearizeoptimize

私は同じ問題を抱えていて、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());

次に、2 番目のパラメーターとしてに$filename渡します。pdf_begin_document

于 2013-04-16T13:28:44.520 に答える