Я пытаюсь сканировать загруженные файлы на PHP-сервере, используя clamAV. Я установил ClamAV на моем сервере (Centos 7). В настоящее время я использую PHP 7, поэтому я использую соединение с сокетом Clamd для сканирования загруженных файлов. Я включил сокеты PHP, файл clamd.sock присутствует в /var/run/clamd.scan/
папка с владельцем apache.
Код подключения My Socket —
$socket = socket_create(AF_UNIX, SOCK_STREAM, 0);
if(socket_connect($socket, '/var/run/clamd.scan/clamd.sock')) {
return $socket;
}
Когда я пытаюсь запустить вышеуказанный код в браузере, я получаю сообщение об ошибке socket_connect(): unable to connect [13]: Permission denied
, Но если я запускаю код PHP через командную строку с пользователем как root, он работает нормально.
Я знаю, что есть некоторая проблема с политикой SELinux с Centos, как будто я отключаю политику SELinux, все также работает хорошо из браузера. я проверил httpd_can_network_connect --> on
а также antivirus_can_scan_system --> on
оба включены.
Проблема с доступом к чему-либо внутри /var/run/
папка для apache
пользователь, есть кое-что (некоторая политика) от SELinux, которая останавливает apache для подключения к файлу сокета clamd. Есть идеи?
После отладки узнал, что это проблема политики SELinux.
Вам необходимо включить политику daemons_enable_cluster_mode в SELinux.
Чтобы включить daemons_enable_cluster_mode:
setsebool -P daemons_enable_cluster_mode 1
Это позволит выполнять сканирование ClamAV через другой сервис, такой как Apache в моем случае.
Других решений пока нет …