![]() |
|
![]() ![]() ![]() |
|
lexluther |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 26.10.2004 Репутация: нет Всего: нет |
Добрый день!
У меня в папке cgi-bin (на моем сайте под Apache) вложена еще одна папка "cgi-bin/a/". Проблема в том, что двоичная cgi-программа, которая работала в папке cgi-bin не работает в папке "cgi-bin/a/" (выдается ошибка сервера 500). В чем может быть проблема? Причем я все права для папки "cgi-bin/a/" установил на 777. С уважением! |
|||
|
||||
Secandr |
|
|||
![]() Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 3 Всего: 39 |
права нужно ставить для файла!
|
|||
|
||||
lexluther |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 26.10.2004 Репутация: нет Всего: нет |
Содержимое error_log следующее (и так много раз):
[Thu Jan 06 16:32:22 2005] [error] [client 82.207.30.115] Premature end of script headers: TypePage.cgi Если более точно, то данное CGI-приложение написано на C++ и интенсивно пишет и считывает файлы в папках вложенных в CGI-BIN. С правами проблем нет (и я просто чего-то не понимаю), поскольку они все установлены в 777. Операционная система - RadHat Enterprise 7.2. Тип хостинга – VPS (виртуальный сервер), разделение на основе технологии Virtuozzo. Самое интересное это то, что в самой папке CGI-BIN программа выполняется вроде нормально, а во вложенных в CGI-BIN папках все вылетает с ошибкой 500. Я просто новичок в этих тонкостях с хостингом и может что-то элементарное не знаю, поскольку локально на моем компе и под FreeBSD и под Linux RadHat все работало просто идеально. Может там, что-то надо править в .htaccess? Если не секрет то подскажите, пожалуйста, что конкретно надо вписать или изменить, я с этим файлом в жизни никогда не работал. Или хотя бы, посоветуйте пожалуйста в чем искать данную ошибку. С Уважением, LeXLuTHeR |
|||
|
||||
Secandr |
|
|||
![]() Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 3 Всего: 39 |
значит у тебя проблема с заголовком скрипта!
Первой строкой долно идти:
При этом если ты пишешь скрипт под виндой у тебя после слова perl появляется лишний символ \r (ASCII символ с кодом 10) Его нужно убить, тогда заработает. |
|||
|
||||
lexluther |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 26.10.2004 Репутация: нет Всего: нет |
Добрый день,
Я проанализировал данную проблему на примере маленькой тестовой программы, не делающей операций ввода вывода, код которой приведен ниже. Как видите, все заголовки передаются, и никаких проблем с правами доступа физически быть не может. К тому же и для исполняемого файла все права установлены в 777. Может там есть еще какие-то права? #include <stdio.h> int main(int argc, char* argv[]) { puts("Content-type:text/html;\n\n<br>START<br><br>"); return 0; } Сам механизм проблемы проявляется следующим образом: 1. Если я предварительно компилирую (g++ -o main.cgi main.cpp) данный код у себя на компьютере, то при последующем переносе данного (полностью скомпилированного) CGI-приложения на сервер программа исполняется идеально как из консоли (под SHH) так и из под Apache в виде CGI. 2. В случае же, если я компилирую аналогичный код на сервере (из исходника g++ -o main.cgi main.cpp, или же из предварительно скомпилированного локально на моем компьютере объектного файла), то при запуске данного приложения как CGI, Apache выдает вышеуказанную ошибку (500 и.т.д.). Если же я запускаю данное приложение в консоли (под SHH), то ошибки не происходит и приложение работает как ему и следует. Т.е. происходит что-то паранормальное. В консоли приложение выполняется, а в Apache нет. ПО на сервере: Apache/2.0.46 (Red Hat), gcc version 3.2.3 20030502 (Red Hat Linux 3.2.3-24), GNU ld version 2.14.90.0.4 20030523 Данный механизм я протестировал несколько десятков раз с разным исходным кодом (в том числе с объектными файлами) и поэтому могу дать 100% гарантию, что все именно так и происходит. Хотя объяснить логически суть подобной ошибки я не могу. PS: Помнится что на заре моей работы с FreeBSD, я работал с версией данной системы 4.4 и у меня происходил следующий глюк: я компилировал тестовое простое (консольное на C++) приложение с помощью GCC и приложение работало, но только до следующей перезагрузки. После перезагрузки системы при попытке запустить данное консольное приложение мне выдавалась ошибка, связанная с какими то библиотеками. Я тогда плюнул и скачал компилятор под ADA95, поскольку одинаково хорошо программирую и на этом языке. С уважением! LeXLuTHeR |
|||
|
||||
MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: 5 Всего: 32 |
Может, стоит усложнить логирование хода выполнения твоего CGI приложения? Твой апач случайно stderr в stdout не перенаправляет? Мысль, конечно, бредовая, но кто его знает...
-------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
lexluther |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 26.10.2004 Репутация: нет Всего: нет |
Всем спасибо проблему решил, оказывается там просто слишком обширные права стояли, а Аппач из-за этого мастдаил. С админом все решил.
|
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Администрирование Web серверов и Web служб | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |