コードの何が問題なのか疑問に思っていました.clamscanを使用すると、/ tmpからの読み取り、またはパスの手動指定の両方で正常に動作します。しかし、clamdscan を使用すると、/tmp からのすべてのパスでエラーが発生します (int の結果は 2 です)。これがコードです。
$command = 'clamdscan ' . escapeshellarg($_FILES['file']['tmp_name']);
$out = '';
$int = -1;
exec($command, $out, $int);
echo "\n" . $command;
echo "\n" . $out;
echo "\n This is int = " . $int;
if ($int == 0) {
// all good, code goes here uploads file as normal IE move to
//echo "File path : ".$file."Return code : ".cl_pretcode($retcode);
//echo "\n";
move_uploaded_file($_FILES["file"]["tmp_name"], "filesave/" . $_FILES["file"]["name"]);
echo "Stored in: " . "filesave/" . $_FILES["file"]["name"];
} else {
echo "\n FAILED";
}
上記のコードに基づいて、 $int = 2 であるため失敗します。ただし、コマンドを次のように変更すると、
//some file that is saved already in the directory
$command = 'clamdscan ' . '/abc/abc.txt';
それは完全にうまく機能します。
コマンドが clamdscan の場合にのみ失敗しました。clamscan を使用する場合、一時ディレクトリは問題ありません
何か案が?