Установите валидатор разметки wc3 локально

Как установить и использовать средство проверки разметки w3c в Ubuntu 13.10 локально? Я знаю, что могу установить его, установив следующие пакеты:

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

но как я могу настроить его для использования так же, как онлайн-версия (то есть через веб-браузер), но локально?

2 ответа

Решение

Хорошие новости! Поэтому, если у вас уже установлен 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 может отсутствовать на странице валидатора в браузере, но валидация должна работать хорошо.

После применения ответа @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 указывает на неверное расположение схемы. Был оставлен over 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.

Другие вопросы по тегам