[英]Unable to connect to unix:///var/run/docker.sock (Permission denied) from PHP code
[英]CentOS 7 unable to connect clamd.sock file (Permission denied error)
我正在嘗試使用clamAV掃描PHP服務器上的上傳文件。 我已經在服務器(Centos 7)上安裝了ClamAV。 當前,我正在使用PHP 7,因此我正在使用Clamd套接字連接來掃描上傳的文件。 我已經啟用了PHP套接字,與Apache所有者一起在/var/run/clamd.scan/
文件夾中存在clamd.sock文件。
我的套接字連接代碼-
$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
錯誤socket_connect(): unable to connect [13]: Permission denied
,但是如果我通過命令行以用戶為根用戶運行PHP代碼,則可以正常工作。
我知道Centos的SELinux策略存在一些問題,就像我禁用SELinux策略一樣,瀏覽器也一切正常。 我已經選中了httpd_can_network_connect --> on
和antivirus_can_scan_system --> on
都處於打開狀態。
問題在於訪問apache
用戶的/var/run/
文件夾中的任何內容,SELinux有某種(某些策略)正在阻止apache連接到蛤socket套接字文件。 有任何想法嗎?
調試后,知道這是SELinux策略問題。 您需要在SELinux中啟用daemons_enable_cluster_mode策略。
啟用daemons_enable_cluster_mode:
setsebool -P daemons_enable_cluster_mode 1
在我的案例中,這將允許通過另一個服務(例如Apache)執行ClamAV掃描。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.