URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 3326
[ Назад ]

Исходное сообщение
"Запуск CGI в корне (вне /cgi-bin/) ! Как ? (Apache2)"

Отправлено Pinky , 21-Май-05 00:31 
Ув. All !

Подскажите пожалуйста как организовть запуск скриптов из корневого каталога, и всем вложенным папкам. Другими словами я хочу организовать запуск скриптов из любогй директории внутри DocumentRoot, а от /cgi-bin/ отказаться навсегда. Стоит Apache2(FreeBSD 5.3). Пробовал ставить ExecCGI на директорию - ноль эмоций. Помогло только ScriptAlias / "/www/site_root/", cgi запускаются, php - нет. А во всех других случаях: php - OK, CGI - source code. Что делать ?


Содержание

Сообщения в этом обсуждении
"Запуск CGI в корне (вне /cgi-bin/) ! Как ? (Apache2)"
Отправлено PoizOn , 23-Май-05 14:32 
>Ув. All !
>
>Подскажите пожалуйста как организовть запуск скриптов из корневого каталога, и всем вложенным
>папкам. Другими словами я хочу организовать запуск скриптов из любогй директории
>внутри DocumentRoot, а от /cgi-bin/ отказаться навсегда. Стоит Apache2(FreeBSD 5.3). Пробовал
>ставить ExecCGI на директорию - ноль эмоций. Помогло только ScriptAlias /
>"/www/site_root/", cgi запускаются, php - нет. А во всех других случаях:
>php - OK, CGI - source code. Что делать ?

mod_perl рулит однозначно. Можно свзязать по расширению скрипты.
Если без mod_perl - то покажите ваш httpd.conf


"Запуск CGI в корне (вне /cgi-bin/) ! Как ? (Apache2)"
Отправлено Pinky , 23-Май-05 18:04 
>
>mod_perl рулит однозначно. Можно свзязать по расширению скрипты.
>

По расширению - да. Скрипты с расширением можно обработать с помощью "AddHandler cgi-script". А вот что делать с приложениями и скриптами не имеющие расширений. Самое интересное что в cgi-bin запускается, лишь бы "chmod +x" был, запустит что угодно. А вот как бы это распространить на все остальные папки. Заметил ещё что опция ExecCGI не дает абсолютно никакого эффекта. Апач ставился из стандактного порта.

>
>Если без mod_perl - то покажите ваш httpd.conf
>
Какой участок ? Он же огромный.
После многих своих экспериментов над апачем - я его переставил, т.ч. там сейчас std конфиг, только директории прописаны. Но если действительно надо - скажите какой участок и я покажу.


Спасибо за участие и помощь.


"Запуск CGI в корне (вне /cgi-bin/) ! Как ? (Apache2)"
Отправлено PoizOn , 24-Май-05 10:00 
>>
>>mod_perl рулит однозначно. Можно свзязать по расширению скрипты.
>>
>
>По расширению - да. Скрипты с расширением можно обработать с помощью "AddHandler
>cgi-script". А вот что делать с приложениями и скриптами не имеющие
>расширений. Самое интересное что в cgi-bin запускается, лишь бы "chmod +x"
>был, запустит что угодно. А вот как бы это распространить на
>все остальные папки. Заметил ещё что опция ExecCGI не дает абсолютно
>никакого эффекта. Апач ставился из стандактного порта.
>
>>
>>Если без mod_perl - то покажите ваш httpd.conf
>>
>Какой участок ? Он же огромный.
>После многих своих экспериментов над апачем - я его переставил, т.ч. там
>сейчас std конфиг, только директории прописаны. Но если действительно надо -
>скажите какой участок и я покажу.
>
>
>Спасибо за участие и помощь.


А зачем вам скрипты без расширений потребовались?
Файл httpd.conf не такой уж и огромный, просто коментарии вырежте и покажите. Ну если говорить об участке - то именно тот участок где вы прописывали ExecCGI. Но только не дефолтный конфиг, его я и так видел.


"Запуск CGI в корне (вне /cgi-bin/) ! Как ? (Apache2)"
Отправлено Pinky , 24-Май-05 14:01 
>А зачем вам скрипты без расширений потребовались?

Ну это как бы не скрипты, это приложения с html-stdout. Самое нехорошее то, что файл нельзя переназвать, например добавив ему pl или cgi расширение. Не будут работать связные с ним приложения :(

>Файл httpd.conf не такой уж и огромный, просто коментарии вырежте и покажите.
>Ну если говорить об участке - то именно тот участок где
>вы прописывали ExecCGI. Но только не дефолтный конфиг, его я и
>так видел.

Вот. Повырезал стандартные значения типа параметров CodePage и LOG-файлов...
--------------------------------------------------------------------
ServerRoot "/usr/local"
PidFile /var/run/httpd.pid
Listen 80
User www
Group www
UseCanonicalName Off
DocumentRoot "/usr/local/www/data"

<Directory />
    AllowOverride All
    Options ExecCGI FollowSymLinks
    Order allow,deny
    Allow from all
</Directory>

<Directory "/usr/local/www/data">
    Options ExecCGI FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

DirectoryIndex index.php index.html index.htm

DefaultType text/html

HostnameLookups On
ServerTokens Full
ServerSignature On

ScriptAlias /cgi-bin/ "/usr/local/www/cgi-bin/"

<Directory "/usr/local/www/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

IndexOptions FancyIndexing VersionSort
DefaultLanguage ru
AddDefaultCharset WINDOWS-1251

AddType application/x-httpd-php .php .php3 .phtml
AddType application/x-httpd-php-source .phps

#AddHandler cgi-script .cgi

<IfModule mod_ssl.c>
    Include etc/apache2/ssl.conf
</IfModule>

# VirtualHost отключены все


"Запуск CGI в корне (вне /cgi-bin/) ! Как ? (Apache2)"
Отправлено PoizOn , 24-Май-05 15:07 
ScriptAlias / "/usr/local/www/"

<Directory "/usr/local/www/">
    AllowOverride None
    Options ExecCGI
    Order allow,deny
    Allow from all
</Directory>

Попробуйте вот так.


"Запуск CGI в корне (вне /cgi-bin/) ! Как ? (Apache2)"
Отправлено Pinky , 24-Май-05 22:50 
>ScriptAlias / "/usr/local/www/"
>
><Directory "/usr/local/www/">
>    AllowOverride None
>    Options ExecCGI
>    Order allow,deny
>    Allow from all
></Directory>
>
>Попробуйте вот так.

Пробовал. Всё работает на ура, за исключением прямого доступа к файлам (не скриптам). Т.е. чтение, запись файлов посредством вызова из скрипта работает отлично, а через прямой линк - получаю либо 403 либо 500. В логах пишет что не верный заголовок скрипта. Апач воспринимает все файлы как скрипты (стандартно, как для /cgi-bin/). Казалось бы ничего, в моей ситуации это не страшно, страшно - что тогда перестает работать php. Я даже пробовал отключать mod_php и пользоватся php как интерпретатором (#!/usr/local/bin/php). Результатов не дало.

Начинаю думать что может и не умеет он то что я хочу с настройками по умолчанию (из порта), может как-то собрать его надо по хитрому, со спец. эфектами. Если я не ошибаюсь, то кажется в Apache 1.xx это решалось проще. Там кажеться было достаточно указания ExecCGI в опциях. А вот в моём случае она точно не работает, даже со скриптами с расширением. Если ScriptAlias указан - запускается даже с Options None и Deny from all. А если нету алиаса - то даже Options All не спасает, на экране видно исходный код скрипта. На php вообще никак не влияет, единственный аргумент - наличие chmod +x, ExecCGI тоже не влияет на запуск .php


"Запуск CGI в корне (вне /cgi-bin/) ! Как ? (Apache2)"
Отправлено Poplar LK , 22-Окт-08 13:04 
SetHandler cgi-script