Как запустить HTMLDOC из CGI-скрипта? - PullRequest
2 голосов
/ 07 ноября 2008

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

Что я сделал до сих пор:

  • Установки 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>";

Ответы [ 2 ]

1 голос
/ 05 октября 2014

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

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

1 голос
/ 28 мая 2009

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

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

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