PCLZIP を使用して、少数のドキュメントと PDF を含む ZIP を作成しています。一部のマシンでは、ユーザーが zip が破損していると主張しています。
私のマシンでは、ZIP が破損していることはわかりませんが、その zip を Gmail 経由で送信しようとすると、実行可能ファイルが含まれていると言って ZIP がブロックされますが、実際にはその zip にはドキュメントと PDF ファイルしかありません。そのため、zip が破損していると主張する人々と、アプリから作成されたこれらの zip を Gmail がブロックしているという関係が見られます。
すべてのファイルを抽出し、Windows の [アーカイブに追加] オプションを使用してそれらを zip に再度追加しようとしました。この zip を送信すると、gmail はブロックされません。
したがって、PHP アプリで ZIP を作成しているときに何らかの問題が発生するはずです。
ZIPを作成しているコードの関連部分は次のとおりです。
<?php
$archive = new PclZip("exportZIPs/{$randomFileName}.zip");
$orgFile = $document->sAbsStoragePath.$document->sSysFileName;
$filePath = array();
$filePath[] = array( PCLZIP_ATT_FILE_NAME => $orgFile,
PCLZIP_ATT_FILE_NEW_FULL_NAME => "{$someNewName}"
);
foreach ($aList as $key => $value) {
$filePathTmp = "{$SomePath}.pdf";
if(!file_exists($filePathTmp)) {
continue;
}
//$filePath[] = "{$SomePath}.pdf";
$filePath[] = array( PCLZIP_ATT_FILE_NAME => $filePathTmp,
PCLZIP_ATT_FILE_NEW_FULL_NAME => "PDFs/Version-{$sVersion}.pdf"
);
}
$v_list = $archive->add($filePath, PCLZIP_OPT_REMOVE_PATH, 'PDFs');
if ($v_list == 0) {
die("Cannot Create Archive! Try again or contact administrator");
die("Error : ".$archive->errorInfo(true));
}
header("Content-Type: application/zip");
header("Content-Disposition:attachment;filename=\"{$SOMENAME}.zip\"");
readfile("exportZIPs/{$randomFileName}.zip");
@unlink("exportZIPs/{$randomFileName}.zip");
?>
私は何を間違っていますか?