parserALT
Страницы форума: ← Назад | 1 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 600 | Дальше →

не работает parser3

#1Андрей
08.09.10 11:54
www.parser.ru → | ответить → | в избранное →

не работает parser3

Собственно конфиг apache2 стандартный
разве что parser установлен в /usr/bin/ а в cgi-bin закинут такой скрипт
#!/usr/bin/parser3

ну и .htaccess
AddHandler parsed-html html
Action parsed-html /cgi-bin/parser3

В результате html в которых размещен код parser, не выполняется.

результат можно видеть тут www2.etherway.ru

В чем причина? Как лечить?
#2Misha v.3
→ Андрей [#1] | 08.09.10 12:05
www.parser.ru → | ответить → | в избранное →

причина в нечитанной FAQ

#3Андрей
→ Misha v.3 [#2] | 08.09.10 12:13
www.parser.ru → | ответить → | в избранное →
Да действительно если набрать www2.etherway.ru/cgi-bin/parser3 то получаем 500 ошибку, но настройки апача верные, rewrite обрабатывается, в error.log ничего подозрительного нет:
[Wed Sep 08 12:12:24 2010] [error] [client 91.197.172.11] [Wed Sep 8 12:12:24 2010] [1690] Parser/3.4.0 [no request info]
[Wed Sep 08 12:12:24 2010] [error] [client 91.197.172.11] Premature end of script headers: parser3
#4Андрей
→ Андрей [#3] | 08.09.10 12:18
www.parser.ru → | ответить → | в избранное →
похоже разобрался, dmesg выдал
parser3[1921]: segfault at 7 ip 00007f9ba51b435e sp 00007fff57202f00 error 4 in libc-2.11.1.so[7f9ba516b000+17a000]

осталось выяснить что ему не нравится.
#5Андрей
→ Андрей [#4] | 08.09.10 12:35
www.parser.ru → | ответить → | в избранное →

Новая проблема

Собственно начинаются танцы с бубном по компилации в ubuntu server 10.04 64bit

при сборке
In file included from pa_pool.C:14:
../../src/include/pa_charset.h:23:27: error: pcre_internal.h: Нет такого файла или каталога

и не важно как подготавливать makefile через build-all или configure
#6Misha v.3
→ Андрей [#3] | 08.09.10 12:35
www.parser.ru → | ответить → | в избранное →

угу. но это другая проблема (я её тоже видел, можете найти мой IP в логе 58.96...)

скорее всего вы взяли бинарник не для вашей OS.

а первая ваша проблема в том, что парсер таки НЕ назначен обработчиком (и про это тоже есть в FAQ-е).
#7Misha v.3
→ Андрей [#5] | 08.09.10 12:38
www.parser.ru → | ответить → | в избранное →

а что собираете-то?


и не важно как подготавливать makefile через build-all или configure

важно. buildall раскладывает либы так, как они потом инклюдятся.

P.S. уверены, что ни один из существующих бинарников не подходит?
#8Андрей
→ Misha v.3 [#6] | 08.09.10 12:38
www.parser.ru → | ответить → | в избранное →
И чето бы решить ее решил собрать парсер из исходников (а парсер был установлен из репозитария убунты).
При собрке появилась проблема с prce.h
#9Андрей
→ Misha v.3 [#7] | 08.09.10 12:40
www.parser.ru → | ответить → | в избранное →
Да, я попробовал
http://www.parser.ru/off-line/download/linux/parser3_4_0_debian5x64_cgi.tar.gz

при выполнении из апача, выдают ошибку с библиотекой (но что интересно при простом запуске из консоли все ок)
#10MoKo
→ Андрей [#9] | 08.09.10 13:44
www.parser.ru → | ответить → | в избранное →

Какую конкретно ошибку?

По-идее если из консоли работает, то и из apache должно работать...
#11Андрей
→ MoKo [#10] | 08.09.10 14:17
www.parser.ru → | ответить → | в избранное →
Собрал я парсер из исходников.
конфиг файл лежит /etc/parser3 (при сборке указал --sysconfdir=/etc/parser3
отдельно собрал libparser3mysql положил в /usr/lib/parser3

фрагмент основного конфига
@conf[filespec]
$confdir[/etc/parser3]
$charsetsdir[/usr/share/parser3/charsets]
$sqldriversdir[/usr/lib/parser3]

$CHARSETS[
# $.koi8-r[$charsetsdir/koi8-r.cfg]
# $.windows-1250[$charsetsdir/windows-1250.cfg]
$.windows-1251[$charsetsdir/windows-1251.cfg]
# $.windows-1257[$charsetsdir/windows-1257.cfg]
]
#change your client libraries paths to those on your system
$SQL[
$.drivers[^table::create{protocol driver client
mysql $sqldriversdir/libparser3mysql.so /usr/lib/libmysqlclient.so.15
#pgsql $sqldriversdir/libparser3pgsql.so /usr/lib/libpq.so.5
#sqlite $sqldriversdir/libparser3sqlite.so /usr/lib/libsqlite3.so.0
#oracle $sqldriversdir/libparser3oracle.so -configure could not guess-
}]
]

однако ругается:
/: /srv/http/ewsite/html/auto.p(47:2): 'mysql://ewsite:ewsite@127.0.0.1/ewsite?charset=cp1251_koi8' $SQL:drivers table must be defined [parser.runtime]

как определить подключилась ли mysql библиотека или нет.
#12Misha v.3
→ Андрей [#11] | 08.09.10 14:23 / 14:29
www.parser.ru → | ответить → | в избранное →

не подключился конфигурационный auto.p с определением $SQL (фрагмент которого вы приводите)

P.S. лично я даже не знаю что такое sysconfdir %-). и у меня есть подозрение, что он парсером не используется. предлагаю вам собрать без этой опции, конфигурационный auto.p положить рядом с бинарником (это конфиг _сайта_, в нём должны быть вещи специфичные для сайта), а файлы кодировок и драйвера положить куда вам больше нравится, указав путь к ним в этом конфигурационном auto.p (именно так, как вы это сделали сейчас)
#13Андрей
→ Misha v.3 [#12] | 08.09.10 14:35
www.parser.ru → | ответить → | в избранное →
Откуда по умолчанию Parser3 пытается прочитать глобальный конфиг?
Дело в том что у нас auto.p есть для сайта и есть auto.p общий (в котором как раз описаны подключаемые модули).
#14Андрей
→ Андрей [#13] | 08.09.10 14:40
www.parser.ru → | ответить → | в избранное →

Снова теже грабли

Собственно вот, снова вернулись к тому с чего начинали.
Не обрабатывается parserом код.
Хотя в правильности .htaccess я уверен:

AddHandler parsed-html html
Action parsed-html /cgi-bin/parser3

DirectoryIndex index.html
RewriteEngine On
RewriteRule ^([^.]+)$ index.html?$1

ErrorDocument 404 /404/

Хотя бы потому что если Action заменить на что-то другое (неправильно) то получаем соотвествуюший error об этом.
#15Misha v.3
→ Андрей [#14] | 08.09.10 14:58
www.parser.ru → | ответить → | в избранное →
сравните:
http://www2.etherway.ru/cgi-bin/parser3
и
http://www.parser.ru/cgi-bin/parser.parser3.cgi

imho: что-то у вас неверно собралось. почему -- я не знаю.
почему не подключается обработчиком некорректно собранное -- гадать конечно можно, но думаю не стоит. мне кажется, в начале надо получить нормально собранный бинарник.
#16Андрей
→ Misha v.3 [#15] | 08.09.10 15:09
www.parser.ru → | ответить → | в избранное →
Вы меня конечно простите, но это писец какое убийство собирать парсер.
делаешь все по мануалу а результат через жопу. (накипело).
Так и придется переделывать сайт на нормальном движке с php
#17Misha v.3
→ Андрей [#16] | 08.09.10 15:20 / 15:28
www.parser.ru → | ответить → | в избранное →

согласен, скачать и запустить один buildall -- "писец какой-то"

и по мануалу-ли была сборка? «не работает parser3» что-то...
Откуда по умолчанию Parser3 пытается прочитать глобальный конфиг?

http://www.parser.ru/download/linux/
Скачайте архив «Конфигурационный файл и файлы описания кодировок» и распакуйте его в каталог, с CGI скриптом.

«Установка и настройка Parser» (документация)
конфигурационный файл считывается из файла, заданного переменной окружения CGI_PARSER_CONFIG,
Если переменная не задана, ищется в том же каталоге, где расположен сам CGI скрипт.



вы безусловно профессионал, но мы -- любители, и мысли читать не можем ("а что собираете-то?", "Какую конкретно ошибку?"). если что-то не понятно -- мы спрашиваем. если не отвечают (а например просто прыгяют с одной проблемы на другую) -- помочь не можем (хотя мне кажется, что мы попытались).
#18Андрей
→ Misha v.3 [#17] | 08.09.10 15:28
www.parser.ru → | ответить → | в избранное →
Не хочется уходить в полемику, но вот как раз через buildall и был собран парсер который как мы видим не работает.
#19Misha v.3
→ Андрей [#18] | 08.09.10 15:35 / 15:39
www.parser.ru → | ответить → | в избранное →
- вы так и не ответили на вопрос "что вы собирали?". перефразирую: какую версию исходников вы брали и где вы её брали? (надо: брать 3.4.0, не раньше, из cvs или из архива с сайта)

- вы писали и про configure и про buildall. я не знаю как вы это всё перемешивали. надо: распаковать, запустить. если что-то подправляли и хотите пересобрать: make distclean и опять buildall...

- после сборки неплохо прогнать тесты: cd tests; make tests

- увы, 64-битные версии у нас появились совсем недавно. возможны баги, которые мы старались исправить и на используемых нами ОС исправили. возможно где-то они остались, но пока нам о них не сообщат -- мы о них не знаем и исправить не можем.
#20Андрей
→ Misha v.3 [#19] | 08.09.10 15:56
www.parser.ru → | ответить → | в избранное →
Последовательность:
cvs -d :pserver:anonymous@cvs.parser.ru:/parser3project login
cvs -d :pserver:anonymous@cvs.parser.ru:/parser3project co -r release_3_4_0 parser3
cvs -d :pserver:anonymous@cvs.parser.ru:/parser3project co sql

cd parser3
./buildall-without-xml

так же собрал sql/mysql

собраный бинарник поместил в /cgi-bin сервера туда же воткнул auto.p

libparser3mysql закинул в каталог с библиотеками

все
результат:
http://www2.etherway.ru/cgi-bin/parser3

Система:
Linux 2.6.32-21-server #32-Ubuntu SMP Fri Apr 16 09:17:34 UTC 2010 x86_64 GNU/Linux
#21MoKo
→ Андрей [#20] | 08.09.10 16:39
www.parser.ru → | ответить → | в избранное →

Дадите доступ - посмотрим что не так

Соответственно нужен будет ssh, слать на moko@design.ru.
Можем посмотреть и сами, что не так, но это уже в течении недели
(под рукой 64-х битной убунты нужной версии нет).
#22Андрей
→ MoKo [#21] | 08.09.10 16:52
www.parser.ru → | ответить → | в избранное →
отписался.
#23MoKo
→ Андрей [#1] | 09.09.10 01:42
www.parser.ru → | ответить → | в избранное →

А ларчик просто открывался

Одна "мелочь", которую Андрей забыл сообщить - это то, что ранее сайт работал на парсере версии 3.3.0. :)
Соответственно все починилось после замены ^process{$code} на ^process{^untaint{$code}}.
Но не исключено, что что-нибудь еще поломалось...
#24MoKo
→ Misha v.3 [#6] | 09.09.10 03:12
www.parser.ru → | ответить → | в избранное →

А вот это похоже несовместимость с GCC 4.4.3 (или с libc)

Program terminated with signal 11, Segmentation fault.
(gdb) bt
#0 0x00007f8ff97e435e in vfprintf () from /lib/libc.so.6
#1 0x00007f8ff9807682 in vsnprintf () from /lib/libc.so.6
#2 0x000000000040ae53 in __vsnprintf (b=0x7fff7f61c3f0 "Parser/", s=1023, f=0x552a17 "Parser/%s", l=0x7fff7f61c840) at pa_common.C:945
#3 0x0000000000406772 in die_or_abort (fmt=0x552a17 "Parser/%s", args=0x7fff7f61c840, write_core=false) at parser3.C:164
#4 0x00000000004068e0 in SAPI::die (fmt=0x552a17 "Parser/%s") at parser3.C:201
#5 0x0000000000406e17 in real_parser_handler (filespec_to_process=0x7fff7f61dc10 "", request_method=0x7fff7f61ff47 "GET", header_only=false)
at parser3.C:382
#6 0x000000000040785f in main (argc=1, argv=0x7fff7f61e138) at parser3.C:754

(gdb) print *l
$2 = {gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fff7f61c920, reg_save_area = 0x7fff7f61c860}

Более-менее разобрался, в чем дело - внутри die_or_abort мы сначала вызываем log, который тоже вызывает vsnprintf.
А в доке написано так:

The functions vprintf(), vfprintf(), vsprintf(), vsnprintf() are equivalent to the functions printf(), fprintf(), sprintf(), snprintf(), respectively, except that they are called with a va_list instead of a variable number of arguments. These functions do not call the va_end macro. Because they invoke the va_arg macro, the value of ap is undefined after the call. See stdarg(3).

В общем непонятно, почему только сейчас вылезло. :)
Страницы форума: ← Назад | 1 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 600 | Дальше →