У меня есть CGI-скрипт, который создает файл .pdf из HTML-страницы. Моя проблема в том, что при запуске из веб-браузера документ .pdf не создается.
Что я сделал до сих пор:
.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>";






Куда вы отправляете сгенерированный файл в браузер?
Обратите внимание, что вы не можете встраивать PDF в HTML; ты должен либо
application/pdf и просто верните файл (без каких-либо HTML-тегов вокруг него).Наиболее вероятная причина заключается в том, что /var/www не доступен для записи процессу apache (или любому другому веб-серверу, который вы используете), поэтому, если вы запустите его из командной строки - с разрешениями вашего пользователя - он будет успешным, но при вызове из веб-браузера веб-сервер запускает его со своими собственными (очень ограниченными) разрешениями, а затем запись не выполняется.
Вам необходимо во-первых - проверить код возврата метода to_file, чтобы узнать, была ли запись успешной, а во-вторых - записать в каталог, в который веб-серверу разрешена запись, например /var/tmp.