2

.pdfHTML ページからファイルを生成する CGI スクリプトがあります。私の問題は、Web ブラウザーから起動すると、.pdfドキュメントが作成されないことです。

私がこれまでに行ったこと:

  • chmod 設定を上記の推奨値 (777) に設定
  • スクリプトからのファイルの通常の出力をテストしましたが、これは正常に機能します
  • コマンドラインからサーバー上でローカルに実行すると、.cgiスクリプトが機能します

スクリプトを Web ブラウザーから実行すると機能しないのはなぜですか?

#!/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>";
4

2 に答える 2

1

最も可能性の高い原因は/var/www、apache プロセス (または使用している Web サーバー) に書き込み可能ではないため、コマンド ラインから (ユーザーのアクセス許可を使用して) 実行すると成功しますが、Web ブラウザーから呼び出すと Webサーバーはそれを独自の (非常に制限された) パーミッションで実行し、書き込みに失敗します。

最初にメソッドの戻りコードをチェックしてto_file、書き込みが成功したかどうかを確認し、次に、Web サーバーが書き込みを許可されているディレクトリ ( /var/tmp.

于 2014-10-05T16:05:10.670 に答える
1

生成されたファイルをブラウザにどこに送信しますか?

PDF を HTML に埋め込むことはできないことに注意してください。あなたはどちらかでなければなりません

  • Web サーバーがファイルを配信する場所にファイルを配置し、ファイルへのリンクをブラウザに送信します。
  • または、コンテンツ タイプを に設定してapplication/pdf、ファイルを返すだけです (周囲に HTML タグはありません)。
于 2009-05-28T10:41:12.910 に答える