Apache не работает cgi

Apache2 CGI-файл не запускается

Браузер предлагает загрузить файл при переходе на http://cgi/cgi-bin/index.cgi.

Конфигурация из /etc/apache2/sites-available:

Буду благодарен за помощь.

Options ExecCGI разве не нужно в ?

А зачем у тебя CGI прямо в DocumentRoot? Если так хочется мешать CGI и HTML, то лучше сделай AddHandler cgi-script .cgi , а ExecCGI убери. Тогда файлы с суффиксом .cgi будут исполняться. Наверное.

Модуль mod_cgi загружен?

Создал отдельный каталог для CGI-скриптов — /var/www/cgi/cgi-bin, оставил для него ExecCGI.

Не нашел каталог modules в /etc/apache2/, зато там есть каталог mods-available, в котором есть cgi.load. Также я встретил такие строчки в apache2.conf:

Меня навело на одну мысль. В этих строках на конце «enabled*», вместо «available*», т.е. возможно как-то нужно включать модуль на подобии a2ensite для виртуальных хостов.

Действительно, оказалась такая программа и модуль включился. Сейчас поэкспериментирую с ScriptAlias директивой.

Выводится ошибка HTTP 500, буду разбирать логи Apache2.

Логи сообщили о том, что CGI-файл выводил неправильный HTTP-header. После редактирования программы все заработало.

Источник

Как включить или отключить скрипты CGI в Apache

Модули Apache mod_cgi / mod_cgid отвечают за обработку сценариев CGI. для рабочего и многопоточного MPM использует модуль cgi daemon «mod_cgid».

Этот учебник поможет вам включить или отключить скрипт CGI на сервере Apache в операционных системах Linux.

1. Включить модули CGI в Apache

Чтобы включить CGI на сервере Apache. вам необходимо загрузить файл модуля mod_cgi.so или mod_cgid.so в файл конфигурации Apache.

CentOS, RHEL & Fedora

В CentOS, Red Hat, Fedora и других дистрибутивах на основе rpm отредактируйте /etc/httpd/conf.modules.d/XX-cgi.conf.

Ubuntu, Debian & LinuxMint

В эти дистрибутивах используйте следующую команду для включения модуля CGI.

Эта команда создает мягкую ссылку на файл конфигурации модуля в каталог / etc / apache2 / mod-enabled /.

После включения модулей CGI в конфигурации Apache вам необходимо перезапустить.

2. Отключить модули CGI в Apache

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

Используйте приведенные ниже параметры, чтобы отключить скрипт cgi на сервере Apache.

CentOS, RHEL & Fedora

CentOS, Red Hat, Fedora и другие дистрибутивы на основе rpm – админы переименовывают файл конфигурации /etc/httpd/conf.modules.d/XX-cgi.conf, как показано ниже.

Ubuntu, Debian & LinuxMint

Ubuntu, Debian, LinuxMint – необходимо отключить модули CGI с помощью команды, аналогичной при включении.

После отключения модулей CGI вам необходимо перезапустить веб-сервер.

Источник

Apache CGI — ошибка 500

ЛОР — последее, куда обращаюсь за советом. Только если уже другие ресурсы бессильны. Виртуальный хост сервера Apache на Ubuntu выдает ошибку 500 при исполнении CGI скриптов. На localhost все скрипты работают.Вот лог ошибки:

ЛОР — последее, куда обращаюсь за советом.

Права на все файлы и папки стоят 777

Кто владелец /media/data/HTML/www/cgi/? Выложи конфиг куда-нибудь.

Читайте также:  Kenshi как отремонтировать купленное здание

Premature end of script headers

Означает, что скрипт запустился, но либо упал с сегфолтом, либо вернул какую-то фигню.

Так что, копайте, что там у вас в этом CGI.

ЛОР — последее, куда обращаюсь за советом.

Это чтобы не задавать тут «хэлловорлдные» вопросы, которые, как правило, возникают у всех, кто только начинает что-то осваивать.

Так что, копайте, что там у вас в этом CGI.

скрипт рабочий 100%. Он работает в localhost, ели вы об этом

О, там же у тебя логи пишутся, посмотри в них 😉

А кто будет разрешать запуск CGI, Пушкин?

что посмотреть в логах то. вы меня запутали ps да, кстати владелец — рут

это я тоже пробовал — не помогает. может я куда то не туда пихаю этот код?

tail -f /var/log/httpd/*

Запускаем CGI и смотрим, что пишут логи.

это я тоже пробовал — не помогает. может я куда то не туда пихаю этот код?

Запросто. Кстати, доступ 777 с владельцем-рутом — нехорошо.

На каком ЯП CGI-то?

логи я приводил ведь.

Почему 777 под рутом не хорошо? на локальной машине вроде не страшно

Короче, пишите правильный конфиг. Перезапускайте апач. Приводите выхлоп.

куда надо прописать?

в логах пишет одно и тоже, нет смысла приводить

Ну, например, у меня так работает (/etc/httpd/conf/httpd.conf):

Кстати, а html-ки то виртуальный хост отдает?

эти же директивы будут аналогично работать в sites-available? хтмлки хост отдает и даже пхпшки, а вот cgi не хочет

755 на каталог и cgi-скрипты

FUUUUUUCK. что то с самими файлами на диске или с диском, потому что с переносом виртуального хоста на /home все заработало! изза чего это может быть.

Значит все-таки права криво раздал в апаче

Или /media/data подмонтирован с noexec =)

// в общем, телепаты вовсю работают!

ТС! Ну объясни же ты: зачем пихать корень веб-сервера в /media ?

Ты не в курсе, для чего эта директория?

Да нет, дело не в апаче совсем, как выяснилось. На диске запрещается исполнение файлов всем не только через апач или ещё что-то не так , я пока не разобрался. наверно что-то с монтированием

🙂 Опять мой libastral.so не подвел

/media/data монтируется через файл fstab вот так

Для сменных накопителей: флешек, USB-HDD и т.п.

Оно еще и на ntfs! Вот это жесть.

А что, есть принципиальная разница , куда кидать корень локального сервера для тестирования страничек? На нтфс он только, чтобы к файлам был доступ и через винду тоже. А куда тогда правильно монтировать жесткие диски? Где же тогда параметры прав при монтировании? rw? Буковка x к ним ничего не дает

Это ntfs! Так что можно забыть о нормальных правах доступа.

Как вариант, если уж так хочется «черезжопия», можно создать образ ext2-раздела на этом ntfs-разделе и держать файлы там (монтировать его через loop-device).

Читайте также:  Как настроить самсунг галакси после сброса настроек

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

Источник

Выделенный сервер своими руками

Облако тегов

Мои контакты

mail:
admin@dedicatesupport.com

Партнеры

Друзья

Счетчики

Настройка выполнения CGI скриптов в apache 2.0

Маленькая заметка по настройке выполнения CGI скриптов в apache.
Свободный перевод подробнейшего мануала.
Итак приступим.
CGI — (Common Gateway Interface) это механизм который дает возможность взаимодействия любой программы и веб сервера apache. То есть, грубо говоря, веб сервер может выполнить любую внешнюю программу и результаты ее работы выдать веб браузеру. Неважно на чем написана программа. Механизм универсален. Но для этого необходимо указать веб серверу, что эту программу нужно выполнить. Вот для этого и необходима настройка веб сервера.

Для настройки есть два механизма. Первый и наиболее часто используемый — с помощью директивы ScriptAlias. Синтаксис такой:
ScriptAlias /cgi-bin «/home/home_dir/cgi-bin»
то есть при наборе в брaузере адреса http://www.ваш_домен.com/cgi-bin/ будут выполняться с крипты из каталога /home/home_dir/cgi-bin.
Обычно одной этой директивы достаточно, для того чтобы скрипты начали исполняться.
Одной из часто появляющихся ошибок является ошибка номер 500. Внутренняя ошибка сервера. Частенько она возникает из-за недостаточных прав для исполнения внешней программы. chmod 755 Вам поможет 🙂

Вторым вариантом настройки выполнения скриптов является использование директив AddHandler и SetHandler.
Пример:

Все файлы из папки /var/www/mydir при обращении в браузере http://www.ваш_домен.com/mydir/ будут исполняться как cgi скрипты.
Еще один вариант. В каталоге много html файлов. И там же нужно разрешить выполнение cgi скриптов. Тут нам поможет директива AddHandler. Пример:

Вот и все. Помещаем файл в соотвествующую директорию веб сервера и вызываем его браузером. При успешной настройке в окне браузера выведется строка Hello, World.На этом закончу маленькую заметку по настройке выполнения cgi скриптов для веб сервера apache.

Добрый день. Подскажите, как

Подскажите, как запустить JavaScript с помощью CGI-скрипта?

Т.е. имеем http://www.ваш_домен.com/XXXX.js , но необходимо запустить XXXX.js через CGI-скрипт.

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

Буду безмерно благодарен.

Подскажите, в каком файле

Подскажите, в каком файле нужно прописать эти директивы? Я поставил апач 2.2 и у меня файл httpd.conf пустой, пытался просто записать в него, но сервер не захотел запускаться Потом попытался записать в apache2.conf не могу найти подходящую строчку, и собственно после дополнения его сервер опять же не стартует.

Никак не могу понять, как

Никак не могу понять, как заставить Apache при обращении на, скажем, http://localhost выполнять http://localhost/cgi-bin/index.cgi?

Размести в корне сервера файл

Размести в корне сервера файл index.html следующего содержания:

Тупой редирект

делай так: 240-ая строка

делай так:
240-ая строка httpd.conf (в если там ничего не менял):
DirectoryIndex \cgi-bin\script.cgi
и будет тебе счастье =)

Самый верный и оптимальный

Самый верный и оптимальный вариант из всех предложенных

Источник

«);
printf( «TEST»);
printf («

\n»);
return 0;
> Всего записей: 7 | Зарегистр. 30-10-2005 | Отправлено: 18:48 30-10-2005

IJCuper

Full Member

Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору я не силен в работе с апачем, но у меня скрипты не запускаются пока я не сделаю ассоциацию файлов нужного типа на perl.exe . Без этого не работают ни pl ни cgi (даже писанные на PERL)
Может быть поможет.
Всего записей: 584 | Зарегистр. 07-07-2004 | Отправлено: 20:52 30-10-2005
Cheery

.:МордератоР:.

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору IJCuper

Цитата:

я не силен в работе с апачем, но у меня скрипты не запускаются пока я не сделаю ассоциацию файлов нужного типа на perl.exe . Без этого не работают ни pl ни cgi (даже писанные на PERL)

тут другая вещь, не связанная с perl

ndelis
хм.. пишет же, что access denied, означает что нет доступа под ntfs
либо к дире, либо к файлу в ней.
Проверь еще, что exe запускается из командной строки

———-
Away/DND
Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:55 30-10-2005
ndelis

Newbie

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору из командной строки все запускается
все права прописанны корректно.
Запуск, чтение, изменение — для всех.

тут возможна более серьезная заморочка.

В линухе аппач можно скофигурить для запуска скриптов под определенным ником (suexec), под виндой этого нет.

Под виндой, вроде, все запускается от ника SYSTEM, как и сам апач
Может есть какая-то завязка на это.

2 Cheery : и экзешники, и перловые скрипты лежат в одном каталоге.
Сообщение «access denied» апач пишет часто, например, когда неправильно прописан путь к интерпретатору перла (не важно причем где, в самом скрипте или в httpd.conf.

Всего записей: 7 | Зарегистр. 30-10-2005 | Отправлено: 21:43 30-10-2005 | Исправлено: ndelis, 21:52 30-10-2005
BuHHu

Junior Member

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Попробуй пропиши в PATH путь к cgi-bin.
Всего записей: 99 | Зарегистр. 03-11-2004 | Отправлено: 22:13 30-10-2005
ndelis

Newbie

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Идея оригинальна, но результата не дает.
Проверил, на всякий случай.

Все оказалось завязано на связку компилятор+операционка, что меня немного удивило.

Пользуйте под виндой MS Visual C++ и проблема отпадает.

Ниже коммент к проблеме, взят с

We’ve found the problem. The env.exe File has been compiled using:
>gcc -v
Reading specs from c:/djgpp/lib/gcc-lib/djgpp/3.31/specs
Configured with: /devel/gnu/gcc/3.3/gnu/gcc-3.31/configurei586-pc-msdosdjgpp —prefix=/dev/env/DJDIR —disable-nlsThread model: singlegcc version 3.3.1

The .exe is running on the console with normal user-privileges verywell, as I previously said.

The Apache Daemon is running as Servicewith SYSTEM-privileges and the DJGPP-compiled executable somehowforces the OS to return a OS5-Access Denied Exception.
Another similar..exe File compiled with AFAIK Microsoft Visual C++ 6 is running verywell under the same circumstances where the former does not.

Well, seems that I have to look for a patch, a new version or anothercompiler.

Всего записей: 7 | Зарегистр. 30-10-2005 | Отправлено: 02:14 31-10-2005
Marilda

Member

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Здравствуйте. Устанавливаю локалхост третий раз и только впервые столкнулась проблемой, когда test.pl работает, а тот же самый файл, переименованный в test.cgi выдает ошибку 500.

Через свойства папки расширение cgi сассоциировала с c:/Program Files/Perl/bin/perl.exe, не помогло.

В конфиге апача AddHandler cgi-script .cgi .bat .exe .pl — имеется.

Источник

Оцените статью