在本地安装 wc3 标记验证器

在本地安装 wc3 标记验证器

如何在 Ubuntu 13.10 本地安装和使用 w3c 标记验证器?我知道我可以通过安装以下软件包来安装它:

sudo apt-get install libapache2-mod-perl2   
sudo apt-get install w3c-markup-validator

但我如何配置它以同样的方式使用它在线版本(即通过网络浏览器),但是在本地呢?

答案1

好消息!如果您已经安装了 apache2,请安装 W3C Validator 和 Perl:

sudo apt-get install w3c-markup-validator libapache2-mod-perl2

问题是 w3c-markup-validator 包尚未更新,无法在 13.10+ 上正确安装(我使用的是 14.04)。要手动修复它:

sudo ln -s /etc/w3c/httpd.conf /etc/apache2/conf-enabled/w3c-markup-validator.conf

/usr/lib/cgi-bin然后我遇到了没有正确权限的问题。这是由于/etc/apache2/conf-available/serve-cgi-bin.conf只有在加载模块时才会提供正确权限的问题。似乎这个版本的 perl 未列在 IfModule 语句中。要解决此问题:

sudo gedit /etc/apache2/conf-available/serve-cgi-bin.conf

您希望它看起来像这样:

<IfModule mod_alias.c>
    <IfModule mod_cgi.c>
        Define ENABLE_USR_LIB_CGI_BIN
    </IfModule>

    <IfModule mod_cgid.c>
        Define ENABLE_USR_LIB_CGI_BIN
    </IfModule>

    <IfModule mod_perl.c>
        Define ENABLE_USR_LIB_CGI_BIN
    </IfModule>

    <IfDefine ENABLE_USR_LIB_CGI_BIN>
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Require all granted
        </Directory>
    </IfDefine>
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

完成这些步骤后,您必须将验证器的 html 目录符号链接到 /var/www/html:

sudo ln -s /usr/share/w3c-markup-validator/html /var/www/html/w3c-validator 

一旦文件链接完毕并且更改生效,您只需重新启动 Apache 服务器:

sudo service apache2 restart

检查一切是否正常

http://localhost/w3c-validator

浏览器中的验证器页面可能缺少 CSS,但验证应该可以正常工作。

答案2

在应用@Skarard 的答案后,W3CValidator 出现了,但检查不起作用。/var/log/apache2/error.log 中有错误

  AH01337: Could not parse expr "$QUERY_STRING = /(^|[;&])debug(=[^0]?)?(\\b|$)/" in /usr/share/w3c-markup-validator/html/header.html: Parse error near '$'
  AH01337: Could not parse expr "$includeJS = 1" in /usr/share/w3c-markup-validator/html/header.html: Parse error near '$'
  AH01337: Could not parse expr "$debug = 1" in /usr/share/w3c-markup-validator/html/header.html: Parse error near '$'
  AH01337: Could not parse expr "$feeds = 1" in /usr/share/w3c-markup-validator/html/header.html: Parse error near '$'

所以我发现 validator.conf 文件指向了错误的架构位置。剩下了一个 validator.conf.dpkg-dist

/etc/w3c# diff validator.conf validator.conf.dpkg-dist 
42c42
<     Library = /usr/share/xml/xhtml/schema/dtd
---
>     Library = /usr/share/xml/w3c-sgml-lib/schema/dtd
57c57
< Allow Private IPs = yes
---
> Allow Private IPs = no
75c75
<   Allow = http
---
>   Allow = data,ftp,http,https
118,123d117
< 
< #
< # Source for the "Tip of The Day" blurbs.
< <Tips>
<   Include tips.cfg
< </Tips>

我将 validator.conf.dkpk-dist 移至 validator.conf 并重新启动 apache。/var/log/apache2/error.log 中的错误消息仍然存在。

Apache 2.4 的使用似乎是原因,如 https://stackoverflow.com/questions/14878076/how-does-expression-work-in-apache-2-4)所以我必须补充

SSILegacyExprParser On

到 w3c-markup-validator.conf 文件。

相关内容