![w3c 验证器未能移交给 validator.nu](https://linux22.com/image/627869/w3c%20%E9%AA%8C%E8%AF%81%E5%99%A8%E6%9C%AA%E8%83%BD%E7%A7%BB%E4%BA%A4%E7%BB%99%20validator.nu.png)
我正在设置一个本地实例W3c 验证器在运行 Centos 6.4 的计算机上。我使用 yum 安装了它。对于 HTML5 验证,验证器将移交给单独的实现,可从验证器.nu
我可以使用发行版提供的脚本在 Jetty 下成功运行 validator.nu 实现。我可以通过将浏览器直接指向 localhost:8888 并使用它来验证网站来成功测试这一点。
当我尝试使用我的 w3c 验证器来验证 HTML5 网站时,它会尝试交接但失败并显示以下消息:
检查此文档的文档类型需要外部工具的帮助,但该工具未在此验证器中启用或当前不可用。检查验证器的系统配置,确保 HTML5 验证器已启用并正常运行。遇到的错误是:500 无法连接到 localhost:8888(连接:权限被拒绝)
禁用防火墙没有帮助。apache(托管 w3c 验证器)和 Jetty(托管 validator.nu 验证器)似乎都没有记录任何相关信息。
从浏览器访问 localhost:8888 和从 apache 下运行的 cgi-bin 访问 localhost:8888 之间可能有哪些相关区别?
更新:/var/log/audit/audit/log 包含以下内容:
类型 = AVC 消息 = 审核(1393503835.221:31235): avc:拒绝 { name_connect } for pid=40041 comm="check" dest=8888 scontext=unconfined_u:system_r:httpd_w3c_validator_script_t:s0 tcontext=system_u:object_r:port_t:s0 tclass=tcp_socket 类型 = SYSCALL 消息 = 审核(1393503835.221:31235): arch=c000003e syscall=42 成功 = 否退出 = -13 a0=3 a1=2340db0 a2=10 a3=21936e0 items=0 ppid=36416 pid=40041 auid=500 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(无) ses=1 comm="check" exe="/usr/bin/perl" subj=unconfined_u:system_r:httpd_w3c_validator_script_t:s0 key=(空)
答案1
您遇到了 SELinux 问题。您httpd_w3c_validator_script_t
被拒绝打开 TCP 套接字。
然而,我看到当前的 SELinux 策略是允许这样做的。
允许 httpd_w3c_validator_script_t httpd_w3c_validator_script_t: tcp_socket { ioctl 读写创建 getattr setattr 锁定附加绑定连接监听接受 getopt setopt 关闭 };
我建议您更新受selinux-policy
影响系统上的软件包。(同时,也更新系统的其余部分。我们现在使用的是 6.5...)如果这不能解决问题,请向上游报告错误。