2013-04-16 5 views
1

나는 동적으로 PHPpdf 문서를 만들 수 pdflib를 사용하고 있지만, 어떤 이유로 내가받을 오류 메시지가이오류 : 수 없습니다 (권한이 거부) 작성

입니다 오픈 PDF 파일 'MJVQKFFGFEPBI.TMP' 라인을 트리거
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

sys_get_temp_dir() 당신에게 임시 파일 디렉토리의 이름을 알려줍니다.

$filename = tempnam(sys_get_temp_dir()); 

그런 다음 두 번째 매개 변수로 pdf_begin_document$filename을 통과 : 당신은 임시 파일을 만들려면이를 사용할 수 있습니다.

+0

/tmp 디렉토리에있는 문서의 관련 부분을 찾을 수 있습니다 및 디렉토리 권한은 이미 1777 – nivincp

+0

내 편집에 설명 된대로 임시 파일을 생성 할 디렉토리를 사용합니다. – Oswald

+0

작동하지 않는 것 같습니다. – nivincp

1

난 그냥 당신이 linearize 또는 optimize 중 하나를 사용할 때 begin_documentinmemory 및/또는 tempdirname - 옵션을 지정하거나 필요 PDFlib에서 라이너 Plöckl의 정보를 얻었다. 기본적으로 pdflib는 임시 파일 을 열려고 시도합니다. 여기서 웹 서버 사용자는 새 파일을 만들 권한이 없습니다.

나는 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가 반환