我想知道我的代码有什么问题,如果我使用 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,临时目录就可以了
任何想法?