LINUX.ORG.RU
ФорумAdmin

[apache2][cgi] Не работает


0

1

Весь день уже читаю мануалы, а работы добиться так и не смог...

В одних мануалах написано, что нужно просто добавить Options ExecCGI в .htaccess, который надо положить в папку где должны выполнятся скрипты.

В других издевательски написано, что нужно добавить

ScriptAlias /cgi-bin/ /var/www/sites/mysite/ 
    <Directory /var/www/sites/mysite> 
        Options +ExecCGI 
        AllowOverride AuthConfig FileInfo 
    </Directory>
в httpd.conf хотя идиоту ясно, что такого файла быть неможет. Видимо авторы этих мануалов, хотят потренировать использование locate, но не объясняют что делать если файлов /*/httpd.conf окажется больше одного. При этом в них ни слова о .htaccess. Видимо описание директории здесь должно заменять это.

В итоге и при том и при варианте просто выводится текст скрипта, а логи не содержат ничего значимого.

Только при применении обоих советов выводится:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, webmaster@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
Apache/2.2.16 (Ubuntu) Server at localhost Port 80

В логе же сказано [Mon Jun 27 00:34:51 2011] [alert] [client 127.0.0.1] /var/www/sites/mysite/.htaccess: Options not allowed here Из чего можно сделать вывод, что товарищи советовавшие писать Options ExecCGI в .htaccess что-то напутали.

Вобщем есть ли вменяемый мануал?

Кто виноват?

Что делать?

Ответ на: комментарий от Eddy_Em

find говорит, что в /etc/apache2/mods-enabled/alias.conf есть в таком виде:

Alias /icons/ "/usr/share/apache2/icons/"

<Directory "/usr/share/apache2/icons">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

</IfModule>
Как я понимаю - ты имел ввиду не это. Вообще все конфиги дефолтные - я не менял ничего в них.

Suntechnic ★★★★★ ()
Ответ на: комментарий от Suntechnic

Нет, я имел в виду, нет ли в /etc/httpd/conf/httpd.conf запрета на исполнение CGI в той директории?

У меня, например, для CGI в /etc/httpd/conf/httpd.conf записано:

<IfModule mod_alias.c>
...
    ScriptAlias /cgi-bin/ "/Data/Misc/html/cgi-bin/"
...
</IfModule>
<Directory "/Data/Misc/html/cgi-bin">
    AllowOverride All
    Options ExecCGI
    Order allow,deny
    Allow from all
</Directory>
А для SSL так:
<Directory "/Data/Misc/SSL/cgi-bin">
    SSLOptions +StdEnvVars
    AllowOverride None
    Options ExecCGI
    Order allow,deny
    Allow from all
</Directory>

Eddy_Em ☆☆☆☆☆ ()

> нужно просто добавить Options ExecCGI в .htaccess

его можно прямо в конфиг апача вписать, секцию Directory.

в httpd.conf хотя идиоту ясно, что такого файла быть неможет


какого файла быть не может? главного конфига апача? не верю.

не объясняют что делать если файлов /*/httpd.conf окажется больше одного


это только в этих ваших убунтах конфиг разосран на десяток непонятных файлов. мой тебе совет, возьми с apache.org или из интернетов нормальный httpd.conf, не содержащий чего-то типа:
Include /etc/apache/ubuntu_specific_dir/conf.d/еще_тыща_каталогов/*.conf

а вообще запости свой текущий конфиг куда-нить на pastebin.

Komintern ★★★★★ ()
Ответ на: комментарий от Suntechnic

Ещё как настолько. adriano32 уже привёл ссылку на документацию, там английским языком сказано, что ты забыл параметр SetHandler (и, по вкусу, AddHandler). Ещё неплохо бы узнать про ScriptAlias

router ★★★★★ ()
Ответ на: комментарий от router

AddHandler тупо говорит, что файлы с суффиксом, скажем, .cgi надо будет выполнять как CGI-скрипты, что имеет смысл лишь если у вас в одной директории лежат и html-файлы, и CGI-скрипты.

А когда у вас CGI не имеют суффиксов и лежат строго в одной директории, AddHandler смысла использовать нет.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Eddy_Em

А вообще подозреваю, что в необъятных просторах конфигурационных файлов апача его бубунты где-то заныкан запрет на исполнение CGI. Или же тупо не подгружен модуль cgi:

LoadModule cgi_module modules/mod_cgi.so
(а то и вообще его нет - в своей мандуриве я как-то натыкался на дебильную разбивку апача на отдельные пакеты, по модулю на пакет)

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от router

Значит, где-то до этого стоит запрет на исполнение CGI.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от router

Ну вобщем-то несмотря на мою нелюбовь к английским мануалам, пришлось их и читать. Неудивительно, что они таки как раз и помогли.

htaccess:

Options +ExecCGI
AddHandler cgi-script cgi tcl

/etc/apache2/httpd.conf:

<Directory /var/www/sites/mysite> 
        Options +ExecCGI 
        AllowOverride All
</Directory>

Вот так работает.

Непонятным остается только то, почему, если я убираю Options +ExecCGI из любого из файлов - работать перестаёт.

Suntechnic ★★★★★ ()
Ответ на: комментарий от Suntechnic

глобальные опции лучше выносить в неизменяемый или редкоизменяемый httpd.conf, а мелочевку(и тонкую настройку прав доступа) - в .htaccess. В данном случае опцию AddHandler ИМХО глобальной сделать лучше, а вот ExecCGI - уже конкретно для папок расставить

Pinkbyte ★★★★★ ()

Если в виртхосте есть ScriptAlias, ExecCGI нафиг не нужен.
Его задача - разрешать выполнять вне каталога ScriptAlias.

pekmop1024 ★★★★★ ()
Ответ на: комментарий от pekmop1024

От apache мне тут не уйти - такой уж хостинг. Может позже будет возможность перебраться на nginx. Ну а насчет cgi - да - вещь специфичная.

И теперь у меня другая напасть:

127.0.0.1 - - [28/Jun/2011:11:56:17 +0400] "GET /sites/mysite/nph-index.cgi HTTP/1.1" 200 608 "-" "Opera/9.80 (X11; Linux x86_64; U; ru) Presto/2.8.131 Version/11.11"
127.0.0.1 - - [28/Jun/2011:11:56:17 +0400] "GET /sites/mysite/nph-index.cgi HTTP/1.1" 200 607 "-" "Opera/9.80 (X11; Linux x86_64; U; ru) Presto/2.8.131 Version/11.11"
127.0.0.1 - - [28/Jun/2011:11:56:17 +0400] "GET /sites/mysite/nph-index.cgi HTTP/1.1" 200 611 "-" "Opera/9.80 (X11; Linux x86_64; U; ru) Presto/2.8.131 Version/11.11"
127.0.0.1 - - [28/Jun/2011:11:56:17 +0400] "GET /sites/mysite/nph-index.cgi HTTP/1.1" 200 607 "-" "Opera/9.80 (X11; Linux x86_64; U; ru) Presto/2.8.131 Version/11.11"
127.0.0.1 - - [28/Jun/2011:11:56:17 +0400] "GET /sites/mysite/nph-index.cgi HTTP/1.1" 200 608 "-" "Opera/9.80 (X11; Linux x86_64; U; ru) Presto/2.8.131 Version/11.11"
127.0.0.1 - - [28/Jun/2011:11:56:17 +0400] "GET /favicon.ico HTTP/1.1" 304 188 "-" "Opera/9.80 (X11; Linux x86_64; U; ru) Presto/2.8.131 Version/11.11"
127.0.0.1 - - [28/Jun/2011:11:56:17 +0400] "GET /sites/mysite/main.css HTTP/1.1" 200 1650 "-" "Opera/9.80 (X11; Linux x86_64; U; ru) Presto/2.8.131 Version/11.11"
Почему он дергает скрипт несколько раз?

Тут проблема в том, что открывается несколько сессий, а так как для каждой новой сессии выделяется отдельный ресурс, то получается, что создается несколько лишних сессий и ресурс ими занимается.

Suntechnic ★★★★★ ()
Ответ на: комментарий от Suntechnic

1. Выкинуть вообще .htaccess, 2. в /etc/apache2/httpd.conf (странно, почему оно у вас не /etc/httpd/httpd.conf) поместить

<Directory /var/www/sites/mysite> 
        Options ExecCGI 
        AllowOverride None
</Directory>
AddHandler нафиг не нужен.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Eddy_Em

У них назначения разные, меня всегда удивляли люди, сующие апач вместо nginx и наоборот. Богата земля русская на любителей путать теплое с мягким.

pekmop1024 ★★★★★ ()
Ответ на: комментарий от Eddy_Em

> Народ пусть и пользуется общим конфигом.

Движки у всех разные, ЧПУ тоже без рерайта только м**аки делают. В общем, никак без простыней не обойтись.

pekmop1024 ★★★★★ ()
Ответ на: комментарий от pekmop1024

Ну, я еще давно пытался перейти с апача на более легкий NGINX, но чего-то мне там не хватало. В т.ч. я не разобрался, как выдавать страничку в зависимости от Accept-Language (в апаче это просто решается суффиксами файлов), как внедрять SSI, как делать перенаправление (чтобы клиенты с IE шли нафиг, а вендовым с каким-нибудь браузером постоянно выскакивало уведомление, что они действуют на свой страх и риск)...

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от pekmop1024

ЧПУ тоже без рерайта только м**аки делают

Ладно, я веб-интерфейсами страдаю. Но не думал, что станок с Числовым Программным Управлением с веб-интерфейсом - обыденная вещь. И что там нужен rewrite.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от pekmop1024

До меня просто не доходит, зачем делать URL'ы человекочитаемыми? Все равно вручную набирается не больше доменного имени...

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Suntechnic

ну, тогда пихай все в .htaccess, я ж не знаю как у тебя там все организовано

Pinkbyte ★★★★★ ()
Ответ на: комментарий от Eddy_Em

Страницу имеешь ввиду? Да какой там косяк:

<html>
  <head>
    <meta name="description" content="">
    <meta name="keywords" content="">
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <link rel="stylesheet" href="main.css" type="text/css">
    <title>Temp</title>
    <!-- <script type="text/javascript" src="scripts.js"></script> -->
  </head>
  <body>
    <div id=header_div>
      <p>
	результат: 58711455
      </p>
    </div>
    <div id="chat_div">
    	
    </div>
    <div id="form_div">
    	
    </div>
  </body>
</html>
Интересно, что при обращении wget'ом все нормально. Выходит это Опера дерганная. И как с этим бороться?

Suntechnic ★★★★★ ()
Ответ на: комментарий от Eddy_Em

э... скрипт тут непричем.

cgi дергается напрямую - http://localhost/sites/mysite/nph-index.cgi и генерит эту страницу. Точнее берет локально сохранённый шаблон html и заменяет маску - вставляет в неё номер выделенного ресурса (здесь 58711455).

Suntechnic ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.