2008-11-07 4 views
2

У меня есть CGI-скрипт, который создает файл .pdf со страницы HTML. Моя проблема в том, что когда он запускается из веб-браузера, нет создания документа .pdf.Как получить HTMLDOC, запущенный из CGI-скрипта?

То, что я сделал до сих пор:

  • настройки CHMOD установленные выше рекомендуется (777)
  • протестирован нормальный выход на файл из сценария, который прекрасно работает
  • когда работает локально на сервер из командной строки, .cgi сценарий работает

Почему скрипт не работает при запуске из веб-браузера?

#!/usr/bin/perl 
use LWP::Simple; 
use HTML::HTMLDoc; 
use CGI; 
print "Content-type: text/html\n\n"; 
print "<html><head><title>test</title></head>"; 
print "<body>"; 

my $htmldoc->set_html_content(qq~<html><body>A PDF file</body></html>~); 
my $pdf = $htmldoc->generate_pdf() or die($!); 
$pdf->to_file('/var/www/tom.pdf'); 
print "</body></html>"; 

ответ

1

Где вы отправляете созданный файл в браузере?

Обратите внимание, что вы не можете встраивать PDF в HTML; Вы должны либо

  • поместить файл в месте, где ваш веб-сервер будет поставлять его и отправить ссылку на файл в браузере
  • или установить тип контента application/pdf и просто вернуть файл (без каких-либо HTML-теги вокруг него).
1

Главным образом вероятной причиной является то, что /var/www не доступен для записи в процессе апача (или любой другой сервер веб вы используете), так что если вы запустите его из командной строки - с разрешениями вашего пользователя - это успешно, но когда вызванный из веб-браузера, веб-сервер запускает его с собственными (очень ограниченными) разрешениями, а затем сбой записи.

Вам необходимо сначала проверить код возврата метода to_file, чтобы убедиться, что письмо было успешным, а во-вторых - записать в каталог, где веб-серверу разрешено писать, например /var/tmp.

Смежные вопросы