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

конфигурация

#1qAIM
03.11.10 15:40
www.parser.ru → | ответить → | в избранное →

конфигурация

Уважаемые форумчане, я уже шестой день юзаю справки, яндекс и этот форум, но так и не нашёл чёткого ответа. Знаю, что вопрос может показаться глупым, но ответ на него я так и не нашёл... Помогите пожалуйста...

Проблема:
На локальном компе и на сервере не могу указать путь к классам.

Порядок действий на локалке:
1.Создаю папку classes на одном уровне с www, помещаю какой-нибудь класс.
2.Пишу SetEnv HTTP_PARSER_ROOT_CONFIG /usr/local/parser3/auto.p в .htaccess.
3.В auto.p (конфигурационный) пишу:
$CLASS_PATH[/home/localhost/classes/]

перед
@auto[]

4.И, соответственно, @USE прописываю.

Денвер не воспринимает этих действий и корневой папкой остаётся:
Z:\home\localhost\www
Если в этой директории создаю классы, то всё работае.

Что я неверно делаю? Как исправить ситуацию?
Уже перепробовал сотни вариантов, намучился с подключением классов...
#2Misha v.3
→ qAIM [#1] | 03.11.10 15:46 / 15:46
www.parser.ru → | ответить → | в избранное →

$CLASS_PATH[/../classes]

«Приложение 1. Пути к файлам и каталогам, работа с HTTP-серверами» (документация)

Для доступа к файлам и каталогам в Parser можно использовать абсолютный или относительный путь.

Абсолютный путь начинается слешем, а файл ищется от корня веб-пространства. Файл по относительному пути ищется от каталога, в котором находится запрошенный документ.
#3qAIM
→ Misha v.3 [#2] | 03.11.10 16:05
www.parser.ru → | ответить → | в избранное →
Миша, это всё я читал уже не один раз...
Не прёт...
#4Misha v.3
→ qAIM [#3] | 03.11.10 16:08
www.parser.ru → | ответить → | в избранное →

Не прёт == ???

где сообщение об ошибке?
#5qAIM
→ Misha v.3 [#4] | 03.11.10 16:13
www.parser.ru → | ответить → | в избранное →
Z:/home/localhost/www/pf/templet/pfTemple.p

read failed: No such file or directory (2), actual filename 'Z:/home/localhost/www/pf/templet/pfTemple.p'


...Вот такое сообщение, к примеру.
На сколько я понимаю конфигурационный файл не воспринимается...?
#6Misha v.3
→ qAIM [#5] | 03.11.10 16:19 / 16:20
www.parser.ru → | ответить → | в избранное →
1. проверьте, что ваш конфигурационный файл находится и выполняется. для этого в метод @auto[] в нем временно впишите ^throw[;1]
2. проверьте что у вас в $CLASS_PATH при выполнении корневого auto.p, для этого в его метод @auto[] впишите ^throw[;=$CLASS_PATH=] (если бы CLASS_PATH не был определён, сообщение об ошибке было-бы иным. кто-то определяет $CLASS_PATH. найти предстоит вам. но скорее всего выполняется не тот конфигурационный auto.p, про который вы думаете)
3. в @auto[] корневого auto.p временно впишите:
$CLASS_PATH[/../classes]
^use[pf/templet/pfTemple.p]


и посмотрите -- будет-ли ошибка (кстати вы забыли указать что вы пишите в @USE)
#7qAIM
→ Misha v.3 [#6] | 03.11.10 17:01
www.parser.ru → | ответить → | в избранное →
@USE
/pf/templet/pfTemple.p


1.Выполняется: 1
2.Не определяется, пишет: ==
3.Ошибка такого типа:
Unhandled exception in /muka/: \usr\local\parser3/auto.p(120:2): 'pf/templet/pfTemple.p' not found along MAIN:CLASS_PATH [parser.runtime]
#8onlyyours
→ qAIM [#7] | 03.11.10 18:18 / 18:40
www.parser.ru → | ответить → | в избранное →
в конфигурационном auto.p вместо:
$CLASS_PATH[^table::create{path
/home/localhost/classes/
}]

напишите:
$CLASS_PATH[^table::create{path
# абсолютный путь к папке с классами
Z:/home/localhost/classes/
}]

или
$CLASS_PATH[^table::create{path
# относительный путь к папке с классами
/../classes/
}]



а при подключении класса вместо:
@USE
/pf/templet/pfTemple.p

напишите:
@USE
pf/templet/pfTemple.p


-------------------------------------------------------------------------------------------------------------------------------------------

@USE
/pf/templet/pfTemple.p

у вас ошибка. прочитайте внимательно «use. Подключение модулей» (документация), а именно:

^use[файл]

Оператор позволяет использовать модуль из указанного файла. Если путь к файлу начинается с "/", то считается, что это путь от корня веб-пространства...
#9qAIM
→ onlyyours [#8] | 03.11.10 19:44
www.parser.ru → | ответить → | в избранное →
Ничего не выходит...
Корневая директория автоматом на www стоит и перед моим путём прописывается ещё раз. Получается, что классы могу запускать, но только из www и её подкаталогов.
PS ...и на хостинге такая же проблема.

А может это попробовать?:

$request:document-root[/дисковый/путь/к/корню/вашего/веб-пространства]

По-умолчанию, $request:document-root равен значению, которое задается в веб-сервере.
Однако иногда его удобно заменить.
#10onlyyours
→ qAIM [#9] | 03.11.10 20:46 / 21:20
www.parser.ru → | ответить → | в избранное →

у меня есть предположение

оно конечно сомнительное, но тем не менее.
3.В auto.p (конфигурационный) пишу:
$CLASS_PATH[/home/localhost/classes/]
перед
@auto[]

если вы выразились буквально и в этом шаге делаете примерно следующее:
# ...
# какой-то код (если конфигурационный auto.p дефолтный,
# то тут находится тело метода unhandled_exception)

$CLASS_PATH[/../classes/]

@auto[]
# тело метода auto
# ...

т.е. $CLASS_PATH у вас непосредственно перед методом @auto[], то это не верно.

пусть у вас первые строки конфигурационного auto.p будут следующие (если вы здесь ничего не меняли):
@conf[filespec][confdir;charsetsdir;sqldriversdir]
$CLASS_PATH[/../classes/]

и в auto.p (расположенного в корне веб-пространства) первые строки:
@USE
pf/templet/pfTemple.p


upd: это лишь предположение ;)
#11qAIM
→ onlyyours [#10] | 03.11.10 21:34
www.parser.ru → | ответить → | в избранное →
если вы выразились буквально и в этом шаге делаете примерно следующее:
# ...
# какой-то код (если конфигурационный auto.p дефолтный,
# то тут находится тело метода unhandled_exception)

$CLASS_PATH[/../classes/]

@auto[]
# тело метода auto
# ...
т.е. $CLASS_PATH у вас непосредственно перед методом @auto[], то это не верно.


Да, именно так и было, так в справке написано, пробовал по вашему совету поставить, тоже не работает...
Очевидно, что я что-то не так делаю, так как эта же проблема и на хостинге...

Есть ещё предположения?
#12Vint
→ qAIM [#11] | 03.11.10 21:41
www.parser.ru → | ответить → | в избранное →
Покажите целиком файлы auto.p и .htaccess. Лучше куда-нибудь на файл-хостинг выложить.

И ещё, что показывает $request:document-root, если его не менять в парсерных файлах?
#13qAIM
→ Vint [#12] | 03.11.10 21:59
www.parser.ru → | ответить → | в избранное →
Это cgi с данными о сервере
Это архив с работоспособными параметрами
Только из паблик-директории и работает...
#14Vint
→ qAIM [#13] | 03.11.10 22:06
www.parser.ru → | ответить → | в избранное →
Из архива не совсем понятно, где находится www?

Эти три файла из www, которая лежит на уровне с classes, так?
.htaccess
auto.p
index.html
#15qAIM
→ Vint [#14] | 03.11.10 22:15
www.parser.ru → | ответить → | в избранное →
Всё, что лежит в архиве - из www.
Так всё работает.
#16Vint
→ qAIM [#15] | 03.11.10 22:21
www.parser.ru → | ответить → | в избранное →
Да, уже сам увидел.
Значит по-порядку, возможно повторюсь в советах.

Структура каталогов должна быть такая (будем считать родительской папкой htdocs):
cgi-bin
classes
www -- здесь все файлы, которые доступны через сайт.

В .htaccess:
Action parsed-html /../cgi-bin/parser3.cgi
SetEnv HTTP_PARSER_ROOT_CONFIG /../cgi-bin/auto.p -- эта строка не обязательна (в linux по крайней мере)

В auto.p:
$CLASS_PATH[/../classes/]

В index.html
@USE
Detect.p
#17Vint
→ Vint [#16] | 03.11.10 22:24
www.parser.ru → | ответить → | в избранное →
В auto.p (слеш на конце не нужен!):
$CLASS_PATH[/../classes]
#18qAIM
→ Vint [#16] | 03.11.10 22:27
www.parser.ru → | ответить → | в избранное →
Нет, так уже пробовал, не работает.
Путь автоматом стоит на www, только из неё всё работает...
#19qAIM
→ Vint [#17] | 03.11.10 22:29
www.parser.ru → | ответить → | в избранное →
и со слешем и без слеша уже пробовал...
Да как только не пробовал, уже почти неделю мучаюсь =)
#20Vint
→ qAIM [#18] | 03.11.10 22:30
www.parser.ru → | ответить → | в избранное →
Что именно не работает, класс не находит?
Какой путь автоматом на www?
#21Vint
→ qAIM [#19] | 03.11.10 22:31
www.parser.ru → | ответить → | в избранное →
Хм... Либо что-то банально не так прописано, либо даже не знаю.
Если дадите доступ к серверу, могу посмотреть.
Можно почту для связи?
#22onlyyours
→ qAIM [#13] | 03.11.10 22:32 / 22:43
www.parser.ru → | ответить → | в избранное →

не совсем понятно структуру опираясь на ваш архив

у вас должно быть примерно следующее дерево (относительно /home/host1213474/qaim.ru/htdocs/)
/htdocs
 |- /cgi-bin
 |   |- дополнительные файлы и папки (например, лог-файл parser3.log, папка lib и т.д.)
 |   |- auto.p (конфигурационный auto.p с методом @conf)
 |   |- parser.cgi
 |
 |- /classes (папка с классами)
 |   |- Detect.p
 |
 |- /www (корень веб-пространства)
     |- .htaccess
     |- auto.p
     |- index.html

1. в конфигурационный auto.p добавьте $CLASS_PATH[/../classes] (как я вам писал выше - после строки с объявлением метода @conf):
@conf[filespec][confdir;charsetsdir;sqldriversdir]
$CLASS_PATH[/../classes]

2. в файл auto.p, который находится в корне веб-пространства, добавьте:
@USE
Detect.p

3. в файл index.html, который находится в корне веб-пространства, добавьте:
@main[]
$hPlatform[^Detect:os[$env:HTTP_USER_AGENT]]
$hBrowser[^Detect:agent[$env:HTTP_USER_AGENT]]

OS: $hPlatform.name<br />
Browser: $hBrowser.name ${hBrowser.ver}.${hBrowser.subver}


повторите по шагам и напишите результат

UPD: во 2 и 3 шагах файлы auto.p и index.html должны содержать только тот код, который написан
#23qAIM
→ qAIM [#19] | 03.11.10 22:34
www.parser.ru → | ответить → | в избранное →

Хеппи Енд =)

Наверно, больше никого не буду отвлекать, - и так уже пост большой...
Кто сталкивался с этой проблемой, напишите, пожалуйста, как справились...

Спасибо Misha v.3, onlyyours и Vint за помощь и время!
#24qAIM
→ onlyyours [#22] | 03.11.10 22:42
www.parser.ru → | ответить → | в избранное →

А вот похоже и подвох нашёлся! =)

А вот похоже и подвох нашёлся! =)

/cgi-bin не в /htdocs, а в /www сидит!
и на локалхосте тоже =)
#25onlyyours
→ qAIM [#24] | 03.11.10 22:54 / 22:55
www.parser.ru → | ответить → | в избранное →

обратите внимание

что такая иерархия директорий, которую я вам указал, будет работать только в том случае если у вашего хоста объявлена директива ScriptAlias для папки /home/host1213474/qaim.ru/htdocs/cgi-bin.

если нет, то размещаете парсер в директории /home/host1213474/qaim.ru/htdocs/www/cgi-bin (как у вас было до этого), а в конфигурационном auto.p указываете $CLASS_PATH[/../../classes]
#26Misha v.3
→ qAIM [#7] | 04.11.10 00:15
www.parser.ru → | ответить → | в избранное →
1 и 2: вы не привели полный текст сообщений об ошибках (в них самое главное для нас -- _пути_)

3. указан путь НЕ к корневому auto.p. судя по вашим рассказам в пути обязан фигурировать www. вы точно понимаете разницу между _конфигурационным_ и _корневым_ auto.p? это два разных файла и лежат они в разных местах.
Страницы форума: ← Назад | 1 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 600 | Дальше →