Уважаемые форумчане, я уже шестой день юзаю справки, яндекс и этот форум, но так и не нашёл чёткого ответа. Знаю, что вопрос может показаться глупым, но ответ на него я так и не нашёл... Помогите пожалуйста...
Проблема: На локальном компе и на сервере не могу указать путь к классам.
Порядок действий на локалке: 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 Если в этой директории создаю классы, то всё работае.
Что я неверно делаю? Как исправить ситуацию? Уже перепробовал сотни вариантов, намучился с подключением классов...
Для доступа к файлам и каталогам в Parser можно использовать абсолютный или относительный путь.
Абсолютный путь начинается слешем, а файл ищется от корня веб-пространства. Файл по относительному пути ищется от каталога, в котором находится запрошенный документ.
1. проверьте, что ваш конфигурационный файл находится и выполняется. для этого в метод @auto[] в нем временно впишите ^throw[;1] 2. проверьте что у вас в $CLASS_PATH при выполнении корневого auto.p, для этого в его метод @auto[] впишите ^throw[;=$CLASS_PATH=] (если бы CLASS_PATH не был определён, сообщение об ошибке было-бы иным. кто-то определяет $CLASS_PATH. найти предстоит вам. но скорее всего выполняется не тот конфигурационный auto.p, про который вы думаете) 3. в @auto[] корневого auto.p временно впишите:
@USE /pf/templet/pfTemple.p у вас ошибка. прочитайте внимательно , а именно: ^use[файл]
Оператор позволяет использовать модуль из указанного файла. Если путь к файлу начинается с "/", то считается, что это путь от корня веб-пространства...
Ничего не выходит... Корневая директория автоматом на www стоит и перед моим путём прописывается ещё раз. Получается, что классы могу запускать, но только из www и её подкаталогов. PS ...и на хостинге такая же проблема.
оно конечно сомнительное, но тем не менее. 3.В auto.p (конфигурационный) пишу: $CLASS_PATH[/home/localhost/classes/] перед @auto[] если вы выразились буквально и в этом шаге делаете примерно следующее:
# ...# какой-то код (если конфигурационный auto.p дефолтный,# то тут находится тело метода unhandled_exception)$CLASS_PATH[/../classes/]@auto[]# тело метода auto# ...
т.е. $CLASS_PATH у вас непосредственно перед методом @auto[], то это не верно.
пусть у вас первые строки конфигурационного auto.p будут следующие (если вы здесь ничего не меняли):
если вы выразились буквально и в этом шаге делаете примерно следующее: # ... # какой-то код (если конфигурационный auto.p дефолтный, # то тут находится тело метода unhandled_exception)
$CLASS_PATH[/../classes/]
@auto[] # тело метода auto # ... т.е. $CLASS_PATH у вас непосредственно перед методом @auto[], то это не верно.
Да, именно так и было, так в справке написано, пробовал по вашему совету поставить, тоже не работает... Очевидно, что я что-то не так делаю, так как эта же проблема и на хостинге...
что такая иерархия директорий, которую я вам указал, будет работать только в том случае если у вашего хоста объявлена директива ScriptAlias для папки /home/host1213474/qaim.ru/htdocs/cgi-bin.
если нет, то размещаете парсер в директории /home/host1213474/qaim.ru/htdocs/www/cgi-bin (как у вас было до этого), а в конфигурационном auto.p указываете $CLASS_PATH[/../../classes]
1 и 2: вы не привели полный текст сообщений об ошибках (в них самое главное для нас -- _пути_)
3. указан путь НЕ к корневому auto.p. судя по вашим рассказам в пути обязан фигурировать www. вы точно понимаете разницу между _конфигурационным_ и _корневым_ auto.p? это два разных файла и лежат они в разных местах.