Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Apache не даёт доступ CGI скриптам к IPC объектам, CGI скрипты не видят внешние IPC объекты 
:(
    Опции темы
vminko
Дата 9.9.2007, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 8.9.2007

Репутация: нет
Всего: нет



Задача: есть демон под win32, нужно в него передать событие (просто индикация, 1 бит т.е.) из CGI скрипта.

Поначалу пытался решить через сигналы, потом понял что под win32 они почти не работают.
Нашёл модуль Win32::Event - то что надо. Реализовал так: в демоне создаётся объект Event, в cgi скрипте он открывается и выстанавливается, демон ловит событие и сбрасывает его. Всё работает, никаких проблем.
Поставил на клиентскую машину - обнаружилась проблема: cgi скрипт не может найти объект Event, созданный демоном.

Для тестирования написал два скрипта:
демон:
Код

#!c:/Perl/bin/perl.exe -w
use Win32::Event;

my $event = Win32::Event->new(1, 0, 'evt');

sleep(1) while (1);
cgi скрипт:
Код

#!c:/Perl/bin/perl.exe -w
use Win32::Event;
use CGI qw/:standard/;

my $event = Win32::Event->open('evt');

print header();

if ($event) {
    print "success\n"
}
else {
    print "can't open abort event object\n";
}


Если запускать скрипт как и демона из cmd.exe - то он находит объект. Отсюда сразу подозрение на неверный конфиг Apache.
Заменил полностью директорию Apache на ту которая на локальной машине лежит, только в конфиге поменял ip - не помогает.
Версии Perl, Apache одинаковые, отличались только дистрибутивы WinXP. Переставил на ту которая локально стоит - не помогает.

Если запускать и демона и cgi под Apache (чисто для эксперимента) - то событие находится. Пришёл к выводу что почему-то Apache блокирует доступ из CGI скриптов к событиям, созданным внешне. Реализовал тоже самое на семафорах - аналогичная картина, не работает. Пришёл к выводу, что это общая проблема для IPC объектов.

Сверил службы запущенные локально и на клиентской машине - ничего подозрительного не нашёл.
Сверил переменные окружения которые получают cgi скрипты - отличий не нашёл.
Perl, Apache никаких warning не пишут в логи.

Идеи кончались  smile 

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

Спасибо

Это сообщение отредактировал(а) vminko - 9.9.2007, 00:24
PM MAIL   Вверх
nitr
Дата 9.9.2007, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



vminko, вполне рабочие скрипты... и у меня работает (WinXP, Apache2, Perl 5.8.8).
Тогда точно не в скриптах, если хотите, киньте сюда ваш конфиг Apache, а если они "дефолтовые", то и не в нем проблема. Какая ваша конфигурация системы?


--------------------
PM   Вверх
vminko
Дата 9.9.2007, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 8.9.2007

Репутация: нет
Всего: нет



Конфиг приложил, он почти не изменялся.

Конфигурация системы:
Windows XP SP2
Perl 5.8.6 811build
Apache 2.2.4
Установлена Visual Studio 2003 .NET, если это как-то может повлиять.

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  httpd.conf 18,11 Kb
PM MAIL   Вверх
nitr
Дата 9.9.2007, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



vminko, что-то интересное smile
У вас практически все настройки для запуска cgi-скриптов (perl) закомментированы smile
Раскомментируйте 
AddHandler cgi-script .cgi .pl


--------------------
PM   Вверх
vminko
Дата 9.9.2007, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 8.9.2007

Репутация: нет
Всего: нет



Пробовал, не помогает. Также пробовал раскомментировать это:
ScriptInterpreterSource registry

PM MAIL   Вверх
nitr
Дата 9.9.2007, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



vminko, я не понимаю как у вас работают скрипты, и как вы их запускали с таким конфигом, но вот что мне пришлось сделать:

Изменил
Цитата

ServerName localhost:80


Apache не воспринимает
Цитата
<IfModule alias_module>

так что закомментируйте 
Цитата
#<IfModule alias_module>
...
#</IfModule>


В общем надо вынести за этот блок строку
Цитата
ScriptAlias /cgi-bin/ "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/"

А то она не воспринимается Apache'ем
Ну и перезагрузил Apache, чтобы все изменения вступили в силу ;)


После этого запустил daemon.pl (демон)
и в браузере
http://localhost/cgi-bin/test_event.cgi

вывод:
Цитата
success


Это сообщение отредактировал(а) nitr - 9.9.2007, 13:43


--------------------
PM   Вверх
vminko
Дата 9.9.2007, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 8.9.2007

Репутация: нет
Всего: нет



Всё исправил согласно вашему описанию, поведение скриптов не изменилось.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0434 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.