We can use clamav scan through remote network by this library.
Before using this library, we prepare a remote clamav server. For example, we can use a clamav container following:
docker run -d dinkel/clamavd
Execute following code.
require 'vendor/autoload.php';
$scanner = \Niisan\ClamAV\ScannerFactory::create([
'driver' => 'remote',
'url' => 'example.com'
]);
if (! $scanner->scan($_FILE['userfile']['tmp_name'])) {
echo 'User file has a virus!';
}
If a file have some virus, Scanner::scan
return false.
When you want know a config that is an argument of ScannerFactory, See example.config.php.
You can select driver, which 'remote' or 'local'. When yor select 'remote', the config need 'host' or 'remote.host' that means clamd host: following
[
'driver' => 'remote',
'url' => 'examle.com'
];
[
'driver' => 'remote'
'remote' => [
'host' => 'example.com'
]
];
Or you select 'local', the config need 'path' or 'local.path', that means a unix socket of clamd.
[
'driver' => 'local',
'path' => '/var/run/clamav/clamd.ctl'
]
If you want to develop this package, some tests will fail for not starting clamd server.
So you command clamd start
to start clamav daemon before testing.