我正在运行 Centos 6.4 的计算机上设置W3c 验证器的本地实例。我已经使用 yum 安装了它。对于 HTML5 验证,验证器交给一个单独的实现,可从validator.nu获得
我可以使用随发行版提供的脚本在 Jetty 下成功运行 validator.nu 实现。我可以通过将浏览器直接指向 localhost:8888 并使用它来验证网站来成功测试这一点。
当我尝试使用我的 w3c 验证器来验证 HTML5 站点时,它会尝试切换并失败并显示以下消息:
检查此文档的文档类型需要外部工具的帮助,该工具要么未在此验证器中启用,要么当前不可用。检查验证器的系统配置,确认 HTML5 验证器已启用且正常运行。遇到的错误是:500 Can't connect to localhost:8888 (connect: Permission denied)
禁用防火墙没有帮助。apache(托管 w3c 验证器)和 Jetty(托管 validator.nu 验证器)似乎都没有记录任何相关内容。
从浏览器和在 apache 下运行的 cgi-bin 访问 localhost:8888 之间可能存在哪些相关差异?
更新:/var/log/audit/audit/log 有以下内容:
type=AVC msg=audit(1393503835.221:31235):avc: denied { 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 type=SYSCALL msg=audit(1393503835.221:31235): arch=c000003e syscall=42 成功=no exit=-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=(none) ses=1 comm="check" exe="/usr/bin/perl" subj=unconfined_u :system_r:httpd_w3c_validator_script_t:s0 key=(null)
你有一个 SELinux 问题。您
httpd_w3c_validator_script_t
被拒绝访问以打开 TCP 套接字。但是,我可以在当前的 SELinux 政策中看到应该允许这样做。
我建议您
selinux-policy
在受影响的系统上更新软件包。(当您使用它时,也请更新系统的其余部分。我们现在使用的是 6.5...)如果这不能解决问题,请向上游报告错误。