CAHTA_
|
|
« : 27-01-2007 02:55 » |
|
доброй ночи всем =) подскажите пожалуйста, что не так. пример скрипта взял из книжки. #! /usr/bin/perl -w use strict; use DBI; use CGI qw(:standard); my ($dbh, $sth, $count); $dbh = DBI->connect ("DBI:mysql:****;database=****", "****", "****", {PrintError=>0, RaiseError=>1}); $sth = $dbh -> prepare( "SELECT name, wins, losses FROM teams"); $sth -> execute(); print header(), start_html("team data"); $count = 0;
while (my @val = $sth->fetchrow_array()) { print p (sprintf("%s, %d, %d\n", $val[0], $val[1], $val[2])); ++$count; } print p( "$count "), end_html(); $sth -> finish(); $dbh -> disconnect(); exit(0);
если через ssh запускать то html код генерирует правильно. Content-Type: text/html; charset=ISO-8859-1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US"> <head> <title>team data</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> <p>название = Fargo, победы = 36, поражения =16 </p><p>название = Winnipeg, победы = 24, поражения =26 </p><p>название = Minot, победы = 19, поражения =23 </p><p>название = Warren, победы = 16, поражения =30 </p><p>всего 4 строки</p> </body> </html>
а вот если попытаться запустить через "веб" ( типа http://mysyte.com/cgi-bin/***.pl) выдает ошибку The server encountered an internal error or misconfiguration and was unable to complete your request.
подскажите пожалуйста... P.S. права у файла 777
|
|
« Последнее редактирование: 28-01-2007 18:41 от CAHTA_ »
|
Записан
|
|
|
|
RXL
|
|
« Ответ #1 : 27-01-2007 10:08 » |
|
CAHTA_, смотри настройки Апача - это его ошибка. Посмотри логи. Чтобы перловые скрипты можно было запускать, в дирекории должно быть разрешено запускать CGI (см. ExecCGI) или, если перл работает как модуль, настроить по инструкции (см. опции модуля mod_perl).
Мне не удалось поработать с mod_perl, но в режиме CGI проблем не испытывал.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Sla
|
|
« Ответ #2 : 27-01-2007 10:35 » |
|
первая мысль .htaccess Добавлено через 3 минуты и 21 секунду:google --> http://willmaster.com/support/faq/
|
|
« Последнее редактирование: 27-01-2007 10:39 от Sla »
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
CAHTA_
|
|
« Ответ #3 : 28-01-2007 01:18 » |
|
чтото не могу понять что и как =( помогите пожалуйста. что именно и как настраивать апач? из книжки взял скриптик для проверки доступа к модулям CGI.pm и DBI работает. #! /usr/bin/perl use CGI; use DBI; $cgi = new CGI; print "Объект CGI успешно создан\n"; @driver_names = DBI -> available_drivers(); print "Достыпные драйверы DBI: @driver_names\n"; exit(0);
P.S. в .htaccess в директории cgi-bin прописанна только одна строка
|
|
« Последнее редактирование: 28-01-2007 01:21 от CAHTA_ »
|
Записан
|
|
|
|
RXL
|
|
« Ответ #4 : 28-01-2007 14:35 » |
|
CAHTA_, во-первых, не "+ExecCGI", а "Options +ExecCGI". Во-вторых, установка опций в .htaccess регламентируется правами директории. Необходимые права - "AllowOverride Options". Надо заглядывать иногда в мануал!
Если имеешь доступ к правке конфига Апача, то поставь "Options +ExecCGI" прямо в конфиге на нужную директорию.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
CAHTA_
|
|
« Ответ #5 : 28-01-2007 15:12 » |
|
вот только меня гложет сомнение, что не в CGI все дело, а в другом. так как у меня давно и отлично работают перловские скрипты со сторокой "use CGI".
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #6 : 28-01-2007 15:24 » |
|
CAHTA_, важно то, что они у тебя работают - значит настраивать ничего не нужно. Команды Перла на Апач не влияют.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
CAHTA_
|
|
« Ответ #7 : 28-01-2007 15:26 » |
|
так в чем же тогда может быть трабла? понять не могу. из под шелла все норм работает, обрашение к БД, вывод информации. а через вед - хрен. обидно.
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #8 : 28-01-2007 15:59 » |
|
CAHTA_, работая как CGI нужно выводить HTTP-заголовок, завершающийся пустой строкой. Можно вывести просто пустую строку, т.к. Апач проверяет состав полей заголовка и добавляет недостающие. #!/usr/bin/perl
print <<EOF Content-type: text/plain; charset=windows-1251
test EOF Добавлено через 13 минут и 46 секунд:Более детально. Я сделал на своем тестовом сервере следующие манипуляции в конфиге Апача: 1. AddHandler cgi-script .pl Это на уровне сервера. 2. Options +ExecCGI Это на уровне директории. 3. Права 777 для файла с расширением .pl . Если не вывести заголовок, пустую строку или вывести некорректный заголовок, то Апач выдает код 500 (Internal Server Error).
|
|
« Последнее редактирование: 28-01-2007 16:13 от RXL »
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
CAHTA_
|
|
« Ответ #9 : 28-01-2007 17:06 » |
|
CAHTA_, работая как CGI нужно выводить HTTP-заголовок, завершающийся пустой строкой. Можно вывести просто пустую строку, т.к. Апач проверяет состав полей заголовка и добавляет недостающие. #!/usr/bin/perl
print <<EOF Content-type: text/plain; charset=windows-1251
test EOF ты не поверишь. но на этот код у меня серв тоже ошибку выдает =) я создал файл и вставил туда этот код. права 777 Добавлено через 4 минуты и 21 секунду:Более детально.
Я сделал на своем тестовом сервере следующие манипуляции в конфиге Апача:
1. AddHandler cgi-script .pl Это на уровне сервера.
2. Options +ExecCGI Это на уровне директории.
3. Права 777 для файла с расширением .pl .
Если не вывести заголовок, пустую строку или вывести некорректный заголовок, то Апач выдает код 500 (Internal Server Error).
все сделал как ты и писал, но все равно скрипт не выполняется.
|
|
« Последнее редактирование: 28-01-2007 17:11 от CAHTA_ »
|
Записан
|
|
|
|
RXL
|
|
« Ответ #10 : 28-01-2007 17:16 » |
|
CAHTA_, а рестартовать Апач не пробовал?
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
CAHTA_
|
|
« Ответ #11 : 28-01-2007 17:37 » |
|
угу. не помогло.
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #12 : 28-01-2007 18:09 » |
|
Тогда смотри причину в логе. Еще лучше - лог сюда (не весь, а только часть, где сама ошибка и +- пару сообщений).
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
CAHTA_
|
|
« Ответ #13 : 28-01-2007 18:24 » |
|
*** - цензура =) DBI connect('host=***;database=***','***',...) failed: Хосту '89.249.184.***' не разрешается подключаться к этому серверу MySQL at /opt/home/***/***/***/cgi-bin/***.pl line 6 [Sun Jan 28 21:17:28 2007] [error] [client 81.25.53.***] Premature end of script headers: /opt/home/***/***/***/cgi-bin/***.pl [Sun Jan 28 21:17:28 2007] [error] [client 81.25.53.*** File does not exist: /opt/home/***/***/***/favicon.ico
favicon.ico -что эт такое понять не могу.!
|
|
« Последнее редактирование: 15-12-2007 20:27 от Алексей1153++ »
|
Записан
|
|
|
|
RXL
|
|
« Ответ #14 : 29-01-2007 06:55 » |
|
CAHTA_, забей - твоя трабла явно в первой строке и, как следствие, во второй строке. Очень полезно использовать обработку ошибок, а не пускать все на самотек! Например так: sub print_error_page($) { print "....HTTP header"; print $_[0]; exit(0); }
#.............
if ($dbh = DBI->connect ("DBI:mysql:****;database=****", "****", "****", {PrintError=>0, RaiseError=>1})) { print_error_page("Can't connect to database: $dbh->errstr (${DBI::err})"); } Добавлено через 3 дня, 2 часа, 54 минуты и 15 секунд:Кто удалил тему? С какого, извиняюсь, ... ? CAHTA_, по логам это ты. Зачем?
|
|
« Последнее редактирование: 01-02-2007 09:49 от RXL »
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
CAHTA_
|
|
« Ответ #15 : 01-02-2007 10:28 » |
|
рашел проблему. точнее не я , а админ хоста=) там чтото с БД было ... вот так вот =(
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #16 : 01-02-2007 14:14 » |
|
Я тебе об этом же написал в посте №17.
А удалять тему зачем было? Тут не только твоя проблема, а целый комплекс маленьких общих проблем описан - может кому пригодится.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
|