套接字操作失败-SOCKET_ECONNREFUSED-ClamAV Laravel

时间:2019-02-04 22:22:15

标签: php windows laravel laravel-5 laravel-5.7

我正在尝试创建一个验证系统来检查上传的文件是否已安全,并且我使用了ClamAV,但无法正常运行(Wampserver64):(

给我这个错误:

  

套接字操作失败:无法建立连接,因为   目标计算机明确拒绝了它。 (SOCKET_ECONNREFUSED)。异常(10061)

我的代码:

// CLAMAV VERFICATION
$validator = \Validator::make($request->all(), [
           'file' => 'clamav',
]);

if ($validator->fails()) {
   return response()->json([
          'title' => trans('lang.OOPS'),
          'html' => $validator->errors()->all(),
          'type_is' => 'swal',
          'status' => 'error'
   ]); 
}

我使用以下软件包:https://github.com/sunspikes/clamav-validator

希望获得帮助,谢谢:)

1 个答案:

答案 0 :(得分:0)

该脚本需要clamd。同时,甚至还有Windows版本:https://www.clamav.net/documentation(不知道)。不过,Windows上可能缺少守护程序和/或套接字。使用shell_exec()时,您只能使用从CLI ...运行的任何扫描仪,因为该脚本似乎是为Linux编写的。 documentation明确指出:

  

默认情况下,程序包将尝试通过默认套接字文件(clamav)连接/var/run/clamav/clamd.ctl守护程序,如果失败,它将尝试tcp端口(127.0.0.1:3310

     

但是您可以设置CLAMAV_UNIX_SOCKET(套接字文件路径)或CLAMAV_LOCAL_TCP_SOCKEThost:port)环境变量来覆盖它。


Windows上可用的最佳选项可能是:

$stdOut = shell_exec("C:\...\clamscan.exe C:\...\filename.zip");

除非有任何CLAMAV_LOCAL_TCP_SOCKET :3310可以连接到

...,因为那里没有CLAMAV_UNIX_SOCKET