如何在 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 文件。