| Как подключить Parser к Apache?
Для этого, согласно документации, нужно в файлах .htaccess или httpd.conf (секция <virtualhost>) добавить следующие строки (подразумевается, что /cgi-bin указывает на каталог, прописанный в ScriptAlias в httpd.conf):
AddHandler parsed-html html
Action parsed-html /cgi-bin/parser3.cgi
Также можно установить Parser в виде модуля к Apache 1.3.
А если я не хочу чтобы парсер обрабатывал документы в определенной директории? Согласно документации по веб серверу Apache, для этого нужно в файле .htaccess для соответствующей директории добавить следующую строку:
RemoveHandler html
Как подключить Parser к IIS? Для этого в программе конфигурации IIS кликаете правой клавишей мыши на веб-сайт и выбираете Properties. Открывается окно Web Site Properties. Затем в странице Home Directory нажимаете кнопку Сonfiguration. В появившемся окне нажимаете Add, и прописываете путь к parser3.exe или parser3isapi.dll. В строке Extension пишете html, и жмете OK. Затем в окне Web Site Properties выбираете страницу Documents, и добавляете index.html в список файлов, открываемых по умолчанию.
Заодно советуем убрать обработчики тех расширений, которые вы не используете.
Что с Русским Apache? Мы не считаем более перекодирование документов в кодировку посетителя необходимым.
Так что, если у вас Русский Apache, необходимо его возможности перекодирования отключить:
CharsetDisable On
На Parser вы задаёте кодировки входных и выходных страниц сами — если захотите, сами сможете реализовать выдачу страниц в разных кодировках по вашим собственным правилам.
Кроме того, Parser поддерживает UTF-8.
Я вроде все сделал правильно, но получаю ошибку «…safe mode…», в чем дело? Бинарные CGI версии Parser под *nix в разделе для скачивания собраны в SAFE MODE. Такой Parser проверяет группу и владельца файла перед его считыванием, и считывают только те файлы, группа или владелец которых совпадает с группой или владельцем процесса, в котором работает Parser.
Это сделано специально, чтобы в случае ошибки в скрипте злоумышленники не могли ею воспользоваться и получить доступ к файлам, к которым он им заведомо не нужен, скажем, к /etc/passwd.
Бывает, что системный администратор настроил вам веб-сервер таким образом, что и группа и пользователь, от которой работает CGI процесс (параметры Group и User в httpd.conf, для Apache) не совпадает ни с группой ни с пользователем, которому принадлежат файлы, создаваемые вами.
В этом случае вы получите сообщение «…safe mode…»
Варианты действий:
Попросите вашего системного администратора прочесть это сообщение, он поймет.
Если хотите, соберите Parser из исходных кодов, включив эту возможность.
У меня на *nix вылезает ошибка веб-сервера Apache «Internal Server Error», что я делаю не так?
Посмотрите в лог ошибок веб-сервера, а также suexec.log (если такой есть), там подробно написано, что случилось.
Типичная ошибка, «Premature end of script headers», означает, что вы забыли поставить бит «executable» или выбрали версию Parser, не соответствующую операционной системе вашего сервера (уточните ее у системного администратора).
Также причиной может быть то, что вы «закачали» исполняемый файл на сервер не в режиме binary. В этом случае размер закачанного файла будет отличаться от файла, лежащего на вашем локальном диске.
Другой причиной может являться опечатка в .htaccess файле, запись в лог файле будет содержать подробное указание, что вы сделали не так. В случаях, когда в логе вы увидите иную ошибку, ее текст подскажет вам, как ее исправить.
При попытке обратиться к parser3.cgi для того чтобы увидеть версию парсера я получаю стандартное сообщение браузера об ошибке, хотя документы .html парсером обрабатываются. В чем может быть причина и как это устранить?
Есть предположение, что под «браузером» подразумевается MSIE и что забыли что по умолчанию в этом браузере показываются
[x] Выводить подробные сообщения об ошибках http (Friendly HTTP error messages)
Эта опция говорит браузеру, что если будет получен HTTP ответ размером менее 512 байт он не будет отображен, а будет показано собственное сообщение об ошибке. Лечится это соответственно отключением данной опции в MSIE.
Я в браузере вижу код на Parser, он не обработался, в чем может быть причина (использую веб-сервер Apache)?
Парсер все-таки не назначен обработчиком ваших документов.
Для проверки функционирования парсера наберите в адресной строке броузера:
http://ваш_сайт/cgi-bin/parser3.cgi (или .exe, для версии под Win32)
Вы должны увидеть примерно следующее:
Parser/3.x.x
Если вы это увидели, парсер скопирован куда следует, права на него установлены правильные.
Если парсер скопирован правильно и вы не забыли прописать в .htaccess инструкции, указанные в документации, возможно вы забыли разрешить апачу обработку .htaccess в файле httpd.conf с помощью инструкции AllowOverride.
Чтобы проверить, обрабатывается ли у вас .htaccess — впишите в него какую-нибудь заведомо неверную инструкцию, например «mytest», в самое начало.
Если при релоаде страницы вы не увидите 500 ошибку (она обязательно появится если все настроено верно) — значит данный файл у вас не обрабатывается. Измените значение AllowOverride или обратитесь к вашему администратору.
Собрал на своём хостинге parser3, но размер исполняемого файла получается в несколько раз больше, чем размер исполняемого файла от студии для подобной операционной системы. Почему? Из исходников парсер собирается с ключом -g [отладочная информация].
Если она вам не нужна, можно сделать: strip parser3
Я установил парсер, пример вида ^eval(2+2) выполняется нормально. Могу ли я проверить работоспособность парсера комплексно? Для проверки работоспособности парсера скачайте из соответствующего раздела тестовый документ, распакуйте его в веб-пространство вашего сайта и обратитесь к нему из броузера.
Данный документ попытается выполнить некоторое количество парсерных инструкций и сообщит вам о результатах. Посмотреть пример выдаваемых им результатов вы можете здесь. |