1

PHPのZipArchiveクラスを使用して、生成されたPDFファイルをzipアーカイブに追加しています。生成されたPDFはC:\ pdfgenerator(私のwwwディレクトリではありません)に保存され、zipファイル自体はC:\ Program Files \ Apache Software Foundation \ Tomcat 6.0 \ webapps \ med(私のWebサイトがあるディレクトリ)に作成および保存されます。生活)。

PDF / Zipを作成し、PDFをZip内に保存するために使用するコードは次のとおりです。

/* build zip & directory for PDFs */
$zip = new ZipArchive;
$time = microtime(true);

if($res = $zip->open("pdf/mf-pdfs_" . $time . ".zip", ZipArchive::CREATE) === TRUE) {
    echo "created";
    } else {
    echo "failed";
    }


$num = 0;
while($row = mysql_fetch_array($result)) {

    /* associate a random # assigned to each PDF file name */
    $num++;
        include($form);
    $rand = rand(1,50000);
     $file_num = $num * $rand;

    $fo = fopen('c:\\pdfgenerator\\mf_pdf-' . $time . '-' . $file_num . '.html', 'w') or die("can't open file");

    fwrite($fo, $output);
    echo shell_exec('c:\wkhtmltopdf\wkhtmltoimage c:\\pdfgenerator\\mf_pdf-' . $time . '-' . $file_num . '.html c:\\pdfgenerator\\mf_pdf-' . $time . '-' . $file_num . '.jpeg');

    /* the follow uses ghost script to execute the ImageMagick convert command from cmd.exe */
    $magick_dir = 'C:\imagemagick' ; // install IM in short DOS 8.3 compatible path
    $send_cmd=$magick_dir .'\convert c:\\pdfgenerator\\mf_pdf-' . $time . '-' . $file_num . '.jpeg -resize "1710x2200^!" c:\\pdfgenerator\\mf_pdf-' . $time . '-' . $file_num . '.jpeg' ;

    $result = shell_exec($send_cmd);
    $send_cmd=$magick_dir .'\convert c:\\pdfgenerator\\mf_pdf-' . $time . '-' . $file_num . '.jpeg c:\\pdfgenerator\\mf_pdf-' . $time . '-' . $file_num . '.pdf';
    $result = shell_exec($send_cmd) ;

    /* EO ghostscript code */

/* add the newly generated files to the Zip Archive */
    if ($res === TRUE) {
    //echo "RESULT TRUE...";
     if($zip->addFile('c:/pdfgenerator/mf_pdf-' . $time . '-' . $file_num . '.pdf','c:/pdfgenerator/mf_pdf-' . $time . '-' . $file_num . '.pdf') === TRUE) {
        echo "addded";
        } else {
        echo "not added";
        }
    //echo "FILE ADDED!";
    } 
 /* EO Zip Archive */

}

PDFとZipファイルを同じ親ディレクトリ(/ med)に保存すると、スクリプトは完全に正常に機能しました。

Zipアーカイブクラスを使用して、同じ親ディレクトリ内に存在しないファイルをZipに追加することは可能ですか?何度も変更を試みましたが、AddFileを正しく機能させることができませんでした。私は何かが足りないのですか?

4

1 に答える 1

1

Apacheが実行されているユーザーの権限に問題があるようです

WindowsでApacheが実行しているユーザーを確認しますか?

Apacheユーザーは、少なくともC:\pdfgeneratorへの読み取りアクセス権を持っている必要があります

于 2013-01-24T20:40:49.953 に答える