Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужна помощь по ошибке 500 (perl) 
:(
    Опции темы
kocmocivan
Дата 16.9.2009, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 16.9.2009

Репутация: нет
Всего: нет



Всем здравствуйте, очень нужна ваша помощь! 
ПРоблема в следующем. 
 
ПРи заходе в админку на сайте компании после ввода логина и паса или даже просто входе без ввода чего-либо идет ошибка: 
 
Internal Server Error 
The server encountered an internal error or misconfiguration and was unable to complete your request. 
 
Please contact the server administrator, [email protected] 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/1.3.37 Server at www.decotec.ru Port 80 
 
Файл логов пишет следующее: 
## 
failed to open log file 
fopen: Permission denied 
[Wed Sep 16 17:08:20 2009] [error] [client 213.147.49.50] Premature end of script headers: /www/docs/wwwdecotec/cgi-bin/admin/login/index.pl 
failed to open log file 
fopen: Permission denied 
[Wed Sep 16 17:08:22 2009] [error] [client 213.147.49.50] Premature end of script headers: /www/docs/wwwdecotec/cgi-bin/admin/login/index.pl 
[Wed Sep 16 17:08:22 2009] [error] [client 213.147.49.50] File does not exist: /www/docs/wwwdecotec/www/favicon.ico 
[Wed Sep 16 17:08:27 2009] [error] [client 213.147.49.50] File does not exist: /www/docs/wwwdecotec/www/favicon.ico 
## 
 
Основной файл - index.pl который собственно и отвечает за вход в админку после ввода логина и паса. 
Его код - 
#!/usr/bin/perl 
use lib "../../lib"; 
use SysFunc; 
use Templates; 
use DBI; 
use data; 
 
my $globals=&SysFunc::get_globals(); 
%data=&data::get(); 
if(&SysFunc::login($data{login},$data{passwd})) 
{ 
    print qq~<script language=javascript>location.href="../cgi-bin/admin/index.pl";</script>~; 
} 
else 
{ 
    print "Content-type: text/html;charset=windows-1251\n\n"; 
    $data=Templates::add_translate($data,"error","<font color=red>оЕРТБЧЙМШОЩК МПЗЙО ЙМЙ РБТПМШ</font>"); 
    Templates::show_page("../../../admin.html",$data); 
} 
if($data{action} eq "logout") 
{ 
    &SysFunc::logout(); 
    print qq~<script language=javascript>location.href="/decotec/";</script>~; 
#    return 1; 
} 
&SysFunc::add_globals; 
exit(0); 
 
ПРоверил все что мог найти в инете по решению данной проблемы: 
1)код ,вроде, правильный (заголовки ответов правильные). 
2)права стоят 755 на файле и на папках. 
 
Еще прочитал что за данную ошибку так же отвечает .htaccess, вот его код: 
DirectoryIndex index.pl 
Options +ExecCGI  
RewriteEngine Off 
 
Есть еще одно соображение, может ли быть такое, что в данном файле идет бывшее сохранение с UTf-8 с BOM и из-за этого не работает. Т.к. раньше до меня код изменял мой ген. дир. с использованием WOrdPad я сейчас работаю с NotePad plus plus. Но он не находит никаких дополнительных кодеровок и доп прописей. 
 
print "Content-type: text/html;charset=windows-1251\n\n"; 
Заменял на print "Content-type: text/html;charset=windows-1251\r\n\r\n"; - тоже не помогает (как прочел где-то в инете)... 
 
Большая просьба еще помогающим, пишите "доступным языком" т.к. глубоких технических выражений я еще не знаю 
PM MAIL   Вверх
Bulat
Дата 16.9.2009, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Цитата(kocmocivan @  16.9.2009,  17:04 Найти цитируемый пост)
[Wed Sep 16 17:08:20 2009] [error] [client 213.147.49.50] Premature end of script headers: /www/docs/wwwdecotec/cgi-bin/admin/login/index.pl 


Что в большинстве случаев означает немножечко кривой код. smile прокомпилить скрипты и модули пробовал? Запустить в ручную?


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
kavkaz
Дата 16.9.2009, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 26.12.2007

Репутация: нет
Всего: 2



переводы строк. особенно после 
Код
#!/usr/bin/perl


PM MAIL ICQ Skype   Вверх
kocmocivan
Дата 16.9.2009, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 16.9.2009

Репутация: нет
Всего: нет



переводы строк. особенно после  - Это что значит?

ПО поводу компеляции всего скрипта - я не знаю почти perl т.к. только начинаю, а сайт оказался как назло именно на perl и что там что обозначает я честно говоря не знаю...
PM MAIL   Вверх
kavkaz
Дата 17.9.2009, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 26.12.2007

Репутация: нет
Всего: 2



from google:
Цитата

Скрипты, написанные на языке Perl, в операционных системах Unix должны иметь правильный перенос строки. В операционной системе Windows в конце каждой строки ставится символ переноса строки и символ возврата каретки. В системах Unix используется только символ переноса строки. В результате скрипты, написанные под системой Windows и закаченные по FTP не в ASCII режиме, не работают.
Самый простой способ решить данную проблему - это перезакачать все Perl-скрипты в ASCII режиме. В этом режиме FTP клиент автоматически заменит все Windows-окончания строка на Unix-окончания.

Если описанный выше способ не помогает, то можно убрать перенос строк выполнив следующую команду через SSH:

perl -i -npe 's/\r//' myscript.pl

где myscript.pl имя вашего скрипта.

PM MAIL ICQ Skype   Вверх
kocmocivan
Дата 17.9.2009, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 16.9.2009

Репутация: нет
Всего: нет



Самый простой способ решить данную проблему - это перезакачать все Perl-скрипты в ASCII режиме.  - СДЕЛАЛ не помогло!

Это сообщение отредактировал(а) kocmocivan - 17.9.2009, 16:40
PM MAIL   Вверх
kavkaz
Дата 17.9.2009, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 26.12.2007

Репутация: нет
Всего: 2



К сожалению под рукой нет у меня компа с Windows ... там где то в настройках есть галочка, проявите любознательность smile

по поводу  ssh предлагаю погуглить... например это почитать http://ru.wikipedia.org/wiki/SSH

клиент для ssh под windows вам нужен PuTTY

данный для авторизации на ваш сервер с сайтом спрашивайте у администратора
PM MAIL ICQ Skype   Вверх
sir_nuf_nuf
Дата 17.9.2009, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 2
Всего: 31



пишите больше знаков вопроса, мы не понимаем что вы спрашиваете!!!!!!!!!  smile 

Цитата(kocmocivan @  17.9.2009,  13:12 Найти цитируемый пост)
Как перезакачать все Perl-скрипты в ASCII режиме через Total Comandet

FTP + F5 ? если хостер разрешает FTP.

Цитата(kocmocivan @  17.9.2009,  13:12 Найти цитируемый пост)
и что такое SSH и с чем его едят

SSH  - защищенное соединение с удаленным сервером (unix)
Для вас это выглядит примерно так:
вы вводите пароль и получаете доступ к командной строке вашего сервера.
дальше делаете что хотите, точне на что хватит прав.


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
kocmocivan
Дата 17.9.2009, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 16.9.2009

Репутация: нет
Всего: нет



Самый простой способ решить данную проблему - это перезакачать все Perl-скрипты в ASCII режиме.  - СДЕЛАЛ через CUteFTP не помогло!

Это сообщение отредактировал(а) kocmocivan - 17.9.2009, 16:41
PM MAIL   Вверх
sir_nuf_nuf
Дата 17.9.2009, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 2
Всего: 31



А еще меня смущает этот  момент:
Цитата(kocmocivan @  16.9.2009,  17:04 Найти цитируемый пост)
if(&SysFunc::login($data{login},$data{passwd})) 
{ 
    print qq~<script language=javascript>location.href="../cgi-bin/admin/index.pl";</script>~; 
} 

1) Если на страничке выводится javascript , то заголовки писать уже не надо что - ли ? Это ошибка
Заголовки должны быть всегда.
Код

print "Content-type: text/html;charset=windows-1251\n\n"; 


2) Это очень извращенный способ делать редирект.
Лучше так:
Код

print "Location: ../cgi-bin/admin/index.pl\n\n"; 




--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
kocmocivan
Дата 17.9.2009, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 16.9.2009

Репутация: нет
Всего: нет



sir_nuf_nuf 
ПО поводу загаловкой согласен - т.к. сама ошибка 500 идет именно из-за того что не заканчивается воспроизведение заголовка полностью... - это как я понял из разных источников.
НО ГДЕ ЭТО ОКОНЧАНИЕ НЕ ПРАВИЛЬНОЕ? или где прерывание начинается... после чегооо???

А вот по поводу - print "Content-type: text/html;charset=windows-1251\n\n"; 
Он должен писаться  именно так или хотя бы присутствовать в скрипте элемент - Content-type: text/html

Без него вывод заголовков и элементов ХТМЛ бесполезен и не работает, опять же как я понял...

Это сообщение отредактировал(а) kocmocivan - 17.9.2009, 19:15
PM MAIL   Вверх
sir_nuf_nuf
Дата 18.9.2009, 01:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 2
Всего: 31



Во первых, дабы рассеить ваши сомнения:
perl у пофиг на переносы строк. Он нормально разбирает и виндовый вариант ("\r\n") и unix ("\n")
Ошибка НЕ в этом.

Цитата(kocmocivan @  17.9.2009,  19:06 Найти цитируемый пост)
где прерывание начинается... после чегооо???

у вас скрипт не большой - можно просто перебрать все варианты. Расставьте отладочную печать - поймете как скрипт работает.
Код

print STDERR "1\n";


Цитата(kocmocivan @  17.9.2009,  19:06 Найти цитируемый пост)
А вот по поводу - print "Content-type: text/html;charset=windows-1251\n\n"; 
Он должен писаться  именно так или хотя бы присутствовать в скрипте элемент - Content-type: text/html

Поймите, вы выводите не HTML, вы выводите ответ HTTP целиком (заголовки + контент)
По стандарту HTTP конент должен быть отделен от заголовков пустой строкой. поэтому "\n\n" - необходимо.


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
kocmocivan
Дата 18.9.2009, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 16.9.2009

Репутация: нет
Всего: нет



Прогнал скрипт через  DzSoft Perl Editor -
он пишет следующее -  что ошибка при инициализации use SysFunc.pm ...
PM MAIL   Вверх
Bulat
Дата 18.9.2009, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



kocmocivan, если есть доступ на сервер выполни команду

perl -c /www/docs/wwwdecotec/cgi-bin/admin/login/index.pl - компиляция smile

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

Добавлено через 2 минуты и 54 секунды
можно и на винде, через cmd... Пуск -> выполнить -> cmd(ОК)... ту же самую команду, только путь относительно того, где у тебя скрипт. smile


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
kocmocivan
Дата 18.9.2009, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 16.9.2009

Репутация: нет
Всего: нет



perl -c /www/docs/wwwdecotec/cgi-bin/admin/login/index.pl
perl -c /cgi-bin/admin/login/index.pl
perl -c ../cgi-bin/admin/login/index.pl
COMMAND NOT UNDETSTOOD - короче не понимает он комунду... 
ВВел в Total COmandor
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0537 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.