| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Apache не даёт доступ CGI скриптам к IPC объектам |
| Автор: vminko 9.9.2007, 00:14 | ||||
| Задача: есть демон под win32, нужно в него передать событие (просто индикация, 1 бит т.е.) из CGI скрипта. Поначалу пытался решить через сигналы, потом понял что под win32 они почти не работают. Нашёл модуль Win32::Event - то что надо. Реализовал так: в демоне создаётся объект Event, в cgi скрипте он открывается и выстанавливается, демон ловит событие и сбрасывает его. Всё работает, никаких проблем. Поставил на клиентскую машину - обнаружилась проблема: cgi скрипт не может найти объект Event, созданный демоном. Для тестирования написал два скрипта: демон:
Если запускать скрипт как и демона из cmd.exe - то он находит объект. Отсюда сразу подозрение на неверный конфиг Apache. Заменил полностью директорию Apache на ту которая на локальной машине лежит, только в конфиге поменял ip - не помогает. Версии Perl, Apache одинаковые, отличались только дистрибутивы WinXP. Переставил на ту которая локально стоит - не помогает. Если запускать и демона и cgi под Apache (чисто для эксперимента) - то событие находится. Пришёл к выводу что почему-то Apache блокирует доступ из CGI скриптов к событиям, созданным внешне. Реализовал тоже самое на семафорах - аналогичная картина, не работает. Пришёл к выводу, что это общая проблема для IPC объектов. Сверил службы запущенные локально и на клиентской машине - ничего подозрительного не нашёл. Сверил переменные окружения которые получают cgi скрипты - отличий не нашёл. Perl, Apache никаких warning не пишут в логи. Идеи кончались Клиентскую машину сменить не могу, поэтому необходимо понять отличия в средах, почему работает локально. Спасибо |
| Автор: nitr 9.9.2007, 09:52 |
| vminko, вполне рабочие скрипты... и у меня работает (WinXP, Apache2, Perl 5.8.8). Тогда точно не в скриптах, если хотите, киньте сюда ваш конфиг Apache, а если они "дефолтовые", то и не в нем проблема. Какая ваша конфигурация системы? |
| Автор: vminko 9.9.2007, 12:18 |
| Конфиг приложил, он почти не изменялся. Конфигурация системы: Windows XP SP2 Perl 5.8.6 811build Apache 2.2.4 Установлена Visual Studio 2003 .NET, если это как-то может повлиять. |
| Автор: nitr 9.9.2007, 12:27 |
| vminko, что-то интересное У вас практически все настройки для запуска cgi-скриптов (perl) закомментированы Раскомментируйте AddHandler cgi-script .cgi .pl |
| Автор: vminko 9.9.2007, 13:06 |
| Пробовал, не помогает. Также пробовал раскомментировать это: ScriptInterpreterSource registry |
| Автор: nitr 9.9.2007, 13:35 | ||||||||||
| vminko, я не понимаю как у вас работают скрипты, и как вы их запускали с таким конфигом, но вот что мне пришлось сделать: Изменил
Apache не воспринимает
так что закомментируйте
В общем надо вынести за этот блок строку
А то она не воспринимается Apache'ем Ну и перезагрузил Apache, чтобы все изменения вступили в силу ;) После этого запустил daemon.pl (демон) и в браузере http://localhost/cgi-bin/test_event.cgi вывод:
|
| Автор: vminko 9.9.2007, 13:52 |
| Всё исправил согласно вашему описанию, поведение скриптов не изменилось. |