grisha
написал 27 октября 2008 года в 16:05 (9916 просмотров)
Ведет себя
как мужчина; открыл 34 темы в форуме, оставил 202 комментария на сайте.
Научите разобарться… Не могу запустить скрипт. Такой httpd.conf
ScriptAlias /cgi-bin/ /home/user/cgi-bin/ это переменная говорит что при обращении к директории cgi-bin (которая у меня пустая) надо искать скрипты в моей директории user AllowOverride None Options ExecCGI опция разрешает выполнение скриптов Order allow,deny Allow from all </Directory>
Если в браузере набираю localhost/cgi-bin то в браузере выводится ошибка Forbidden You don’t have permission to access /cgi-bin/ on this server.В логах апаче — [Mon Oct 27 22:45:19 2008] [error] [client 127.0.0.1] attempt to invoke directory as script: /var/www/cgi-bin/
// Тему переместил(а) Dmitry Shurupov из форума «UNIX FAQ: вопросы по UNIX/Linux».
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
У вас ExecCGI прописан для каталога /var/www/cgi-bin, а ScriptAlias — для /home/user/cgi-bin/. Не хватает единства :-)
Вероятно, вам нужно изменить блок:
На:
Это если вы собираетесь запускать скрипты из /home/user/cgi-bin/. Если наоборот — то и заменять надо ScriptAlias.
С таким конфигом
Все то же самое
Вы путаете Location и Directory.
Для Location нужно указывать относительный для Web-сервера путь — в моем примере я указал /cgi-bin (а не «/home/user/cgi-bin»), что и было правильным вариантом в данном случае.
Для Directory — абсолютный путь в файловой системе.
А ещё в секции httpd.conf, описывающей mime_module есть такой абзац
Отсутствие этой записи не может привести к «Forbidden» в данном случае. Но пожелание на перспективу — да, полезное :-)
Наверное так, но с конфигом
Опять все то же.
Так увлекся другим взглядом на проблему, что совсем забыл про изначальную постановку задачи…
Возможно, нужно добавить в опции FollowSymLinks.
А вообще, что вы ожидаете увидеть, обращаясь просто к /cgi-bin ? Нужно обращаться к конкретному скрипту, который там находится…
И вообще что это за хрень? attempt to invoke directory as script: /var/www/cgi-bin/ Попытка выполнить директорию как скрипт? Это как понимать?
Про FollowSymLinks я, пожалуй, пошутил…
Это так и понимать. У вас все, что относится к /var/www/cgi-bin/, воспринимается как CGI-скрипты. Каталоги тоже. Вот он и пытается их выполнить.
В общем, пора уже попробовать зайти на http://localhost/cgi-bin/ваш-скрипт.cgi (не забудьте, что ваш-скрипт.cgi должен быть исполняемым, т.е. иметь +x).
Я ожидаю увидеть типа список файлов как это обычно бывает (например строку в браузере Index of /cgi-bin)
The requested URL /cgi-bin/squidGuard.cgi was not found on this server. это в окне браузера, а в логах [error] [client 127.0.0.1] script not found or unable to stat: /var/www/cgi-bin/squidGuard.cgi
С опцией FollowSymLinks результат прежний.
А что говорит
ЗЫ: Есть мнение, что твоя ошибка связана с тем, что ты не обозначил прав доступа к каталогу файловой системы.
Нах Location! Directory — наше фсё!!!
Ничего, игнор и молчание :)
Это в смысле к каталогу /proc? (dr-xr-xr-x 143 root root 0 2008-10-28 04:42 proc) Не понял, можно подробнее, зачем?
Ой, тоже пошутил, оно говорит что
И чему ты удивляешься?
Что тебе говорит
Вообще-то для этого надо еще включать опцию Indexes. По умолчанию ее быть не должно…
А теперь — еще раз: где в файловой системе находится CGI-файл (полный путь) и какой сейчас конфиг для CGI?
Ура, заработало. Создал другую папку /var/www/cgi/ , соответственно изменил ScriptAlias на /cgi/ в результате при наборе в строке браузера localhost/cgi/squidGuard.cgi скрипт заработал.
ЗЫ: все-таки в чем проблема с /cgi-bin/?
Смотря где.
Для public_html в домашнем каталоге пользователя ЕМНИП допускается.
Здесь /home/user/cgi-bin/squidGuard.cgi
Не знаю :(, подскажите как посмотреть.
Насчет /cgi-bin/… А может быть дело в папке /usr/lib/cgi-bin/ (может ее удалить с самого начала следовало или переместить а не создавать еще одну в /var/www/?
Все равно хочу знать почему нет доступа к папке /cgi/, хотя указал в опциях Options ExecCGI Indexes.
> Не знаю :(, подскажите как посмотреть.
Уже неактуально, раз разобрались :-) Я имел в виду ту часть httpd.conf, где речь идет о CGI.
> Насчет /cgi-bin/… А может быть дело в папке /usr/lib/cgi-bin/ (может ее удалить с самого начала следовало или переместить а не создавать еще одну в /var/www/?
Не надо ничего удалять. Подозреваю, что где-то в другом месте конфига у вас перезаписывается правило для /cgi-bin (значение /usr/lib/cgi-bin — это по умолчанию такое).
> Все равно хочу знать почему нет доступа к папке /cgi/, хотя указал в опциях Options ExecCGI Indexes.
Доступа нет, потому что для CGI, надо полагать, Indexes не допустимы. Угроза безопасности, видимо. Во всем этом я не уверен, но легко поверю, если так.
Можно придумать что-нибудь типа mod_rewrite на /cgi-bin/, который будет пересылать на /cgi-bin/index.pl, который в свою очередь будет генерить подобие Indexes от Apache. Стоит ли оно того? ;-)