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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема загрузки библиотеки Common.dll, Из пакета XML::LibXML::Common 
:(
    Опции темы
Orthenner
Дата 6.9.2005, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 22.5.2004
Где: Мытищи

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



Добрый день.

Использую Апач версии 2.0.54 под Windows.
Операционка - Windows Server 2003 EE.
Для Cgi использую Active Perl 5.6.1

При попытке использовать подключение в скрипте вроде:
Код

use XML::LibXML;



Апач выдает ошибку, в логах следующее:

Цитата

[Tue Sep 06 09:50:47 2005] [error] [client 192.168.1.1] Premature end of script headers: dbupdate.pl, referer: http://smeu.org/form.html
[Tue Sep 06 09:50:47 2005] [error] [client 192.168.1.1] Can't load 'C:/progr/Perl/site/lib/auto/XML/LibXML/Common/Common.dll' for module XML::LibXML::Common: load_file:\xcd\xe5 \xed\xe0\xe9\xe4\xe5\xed \xf3\xea\xe0\xe7\xe0\xed\xed\xfb\xe9 \xec\xee\xe4\xf3\xeb\xfc at C:/progr/Perl/lib/DynaLoader.pm line 206., referer: http://smeu.org/form.html
[Tue Sep 06 09:50:47 2005] [error] [client 192.168.1.1] Compilation failed in require at C:/progr/Perl/site/lib/XML/LibXML.pm line 11., referer: http://smeu.org/form.html
[Tue Sep 06 09:50:47 2005] [error] [client 192.168.1.1] BEGIN failed--compilation aborted at C:/progr/Perl/site/lib/XML/LibXML.pm line 11., referer: http://smeu.org/form.html
[Tue Sep 06 09:50:47 2005] [error] [client 192.168.1.1] Compilation failed in require at C:/progr/Perl/site/lib/XML/LibXSLT.pm line 7., referer: http://smeu.org/form.html
[Tue Sep 06 09:50:47 2005] [error] [client 192.168.1.1] BEGIN failed--compilation aborted at C:/progr/Perl/site/lib/XML/LibXSLT.pm line 7., referer: http://smeu.org/form.html
[Tue Sep 06 09:50:47 2005] [error] [client 192.168.1.1] Compilation failed in require at C:\\progr\\web\\www\\docs\\smeu.org\\cgi-bin\\dbupdate.pl line 7., referer: http://smeu.org/form.html
[Tue Sep 06 09:50:47 2005] [error] [client 192.168.1.1] BEGIN failed--compilation aborted at C:\\progr\\web\\www\\docs\\smeu.org\\cgi-bin\\dbupdate.pl line 7., referer: http://smeu.org/form.html
[Tue Sep 06 09:50:47 2005] [error] [client 192.168.1.1] File does not exist: C:/progr/web/www/docs/smeu.org/favicon.ico


При выполнении скрипта вручную, вроде:

Цитата

perl dbupdate.pl


Все проскакивает нормально.

Не подскажите, в чем может быть проблема и как ее урегулировать.
PM MAIL ICQ   Вверх
sharq
Дата 6.9.2005, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

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



Orthenner я не знаю как ты устанавливал модуль, наверно, не до конца.
Впервые вижу такую сложную и установка модуля, наверно, она того стоит. smile

Ты читал мою статью "Установка perl-модулей", если нет, то прочитай.
Так вот, после этого модуля статью надо дополнять. smile

Как ты, наверно, догадался модуль XML::LibXML модульно зависим от трех:
Код

        <DEPENDENCY NAME="XML-NamespaceSupport" VERSION="1,07,0,0" />
        <DEPENDENCY NAME="XML-LibXML-Common" VERSION="0,0,0,0" />
        <DEPENDENCY NAME="XML-SAX" VERSION="0,11,0,0" />


Без проблем ставится модуль XML::NamespaceSupport, он ни откого не зависит.

Модуль XML::SAX зависит от модуля XML::LibXML и скрипта install_parser_details, который должен установить ParserDetails.ini файл:
Код

        <DEPENDENCY NAME="XML-NamespaceSupport" VERSION="0,03,0,0" />               
        <INSTALL EXEC="PPM_PERL" HREF="http://theoryx5.uwinnipeg.ca/ppmpackages/scripts/install_parser_details">install_parser_details</INSTALL>


В свою очередь (не сразу заметил), модуль XML::SAX устанавливает XML::SAX::PurePerl::Reader::URI, который зависит от модуля File::Temp. У меня, например, этого модуля не было. Так что его тоже надо установить.

Наконец, модуль XML::LibXML::Common - самый важный, зависит от скрипта install_libxml2, который должен выкачать библиотеку libxml2:
Код

        <INSTALL EXEC="PPM_PERL" HREF="http://theoryx5.uwinnipeg.ca/ppmpackages/scripts/install_libxml2">install_libxml2</INSTALL>


Ты, конечно, можешь установить все это через ppm (добавив пару настроек, касающихся репозитариев). Но можешь (как я, например) скачать все: модули, библиотеку libxml2 и скрипт install_parser_details для установки ini файла и установить все это барохло локально.

В общем, у меня все нормально стало и все рабыть!

Если что, звони. smile

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
Orthenner
Дата 13.9.2005, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 22.5.2004
Где: Мытищи

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



Переустановил все модули. Сначала ручками, потом через PPM. Все равно не помогло. Вручную все все выполняется отлично, а как CGI не работает... Может это в настройках Апача?
PM MAIL ICQ   Вверх
sharq
Дата 13.9.2005, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

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



Orthenner т.е. такой скрипт у тя не работает:

Код

use strict;
use XML::LibXML;

print XML::LibXML::LIBXML_DOTTED_VERSION, "\n";

my $parser = XML::LibXML->new();
print $parser, "\n";

Только этот скрипт, нужно запускать через командную строку.
Чтобы запустить через браузер, нужно кое-что добавить. smile

Если работает, то это проблема с твоим cgi-скриптом (можешь привести его),
если не работает, то криво поставил.

;)




--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
Orthenner
Дата 14.9.2005, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 22.5.2004
Где: Мытищи

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



В том то все и дело, что в командной строке у меня все работает, а вот через браузер нет....

Вот к примеру код, который у меня через командную строку работает, а при выполнении его браузером выдает ошибку 500

Код

#!/progr/Perl/bin/perl

use CGI;
use XML::LibXML;
use Text::Iconv;

my $translator=Text::Iconv->new("cp1251","utf-8");

$xml_version=$translator->convert("1.0");
$rss_version=$translator->convert("2.0");
$encoding=$translator->convert("UTF-8");
$channel_title=$translator->convert("ASU news");
$site_link=$translator->convert("http:\/\/www.istus.ru\/");
$channel_description=$translator->convert("Новости");
$language=$translator->convert("ru,ru-ru");
$copyright=$translator->convert("Copyright 2005");
$channel_pubDate=$translator->convert("Wen, 14 Sep");
$channel_category=$translator->convert("News");
$channel_ttl=$translator->convert("60");
$channel_image=$translator->convert("http:\/\/istus.ru\/img\/channel.jpg");


$docRSS=XML::LibXML::Document->createDocument($xml_version,$encoding);
$rss=$docRSS->createElement("rss");
$rss->setAttribute("version",$rss_version);
$docRSS->setDocumentElement($rss);
    $channel=$docRSS->createElement("channel");
    $rss->appendChild($channel);
        $node=$docRSS->createElement("title");
        $text=$docRSS->createTextNode($channel_title);
        $node->appendChild($text);
    $channel->appendChild($node);
    $node=$docRSS->createElement("link");
        $text=$docRSS->createTextNode($site_link);
        $node->appendChild($text);
    $channel->appendChild($node);
    $node=$docRSS->createElement("description");
        $text=$docRSS->createTextNode($channel_description);
        $node->appendChild($text);
    $channel->appendChild($node);
    $node=$docRSS->createElement("language");
        $text=$docRSS->createTextNode($language);
        $node->appendChild($text);
    $channel->appendChild($node);
    $node=$docRSS->createElement("copyright");
        $text=$docRSS->createTextNode($copyright);
        $node->appendChild($text);
    $channel->appendChild($node);
    $node=$docRSS->createElement("pubDate");
        $text=$docRSS->createTextNode($channel_pubDate);
        $node->appendChild($text);
    $channel->appendChild($node);
    $node=$docRSS->createElement("category");
        $text=$docRSS->createTextNode($channel_category);
        $node->appendChild($text);
    $channel->appendChild($node);
    $node=$docRSS->createElement("ttl");
        $text=$docRSS->createTextNode($channel_ttl);
        $node->appendChild($text);
    $channel->appendChild($node);
    $node=$docRSS->createElement("image");
        $text=$docRSS->createTextNode($channel_image);
        $node->appendChild($text);
    $channel->appendChild($node);

    print "Content-type: text/html\n\n";

PM MAIL ICQ   Вверх
korob2001
Дата 14.9.2005, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



А ты уверен, что ошибка в этой части кода? Просто у меня эта часть чудесно отрабатывает, естественно кроме зоголовка ничего не выводит. Кстати, зачем ты подключаешь модуль CGI? Наверняка у этой программы есть продолжение и ошибка именно в нём.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
sharq
Дата 14.9.2005, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

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



Orthenner какая хоть ошибка в логах?


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
Orthenner
Дата 14.9.2005, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 22.5.2004
Где: Мытищи

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



Я этот скрипт привел для примера... У меня не работает даже такой код:

Код

#!/progr/perl/bin/perl

use XML::LibXML;

print "Content-type: text/html\n\n";


Ошибка не в скрипте, через командную строку скрипт отрабатывается на ура, Апач выдает ошибку №500. В логах как я уже писал в своем посте выдается что-то вроде:

Цитата

[Tue Sep 06 09:50:47 2005] [error] [client 192.168.1.1] Premature end of script headers: dbupdate.pl, referer: http://smeu.org/form.html
[Tue Sep 06 09:50:47 2005] [error] [client 192.168.1.1] Can't load 'C:/progr/Perl/site/lib/auto/XML/LibXML/Common/Common.dll' for module XML::LibXML::Common: load_file:\xcd\xe5 \xed\xe0\xe9\xe4\xe5\xed \xf3\xea\xe0\xe7\xe0\xed\xed\xfb\xe9 \xec\xee\xe4\xf3\xeb\xfc at C:/progr/Perl/lib/DynaLoader.pm line 206., referer: http://smeu.org/form.html
[Tue Sep 06 09:50:47 2005] [error] [client 192.168.1.1] Compilation failed in require at C:/progr/Perl/site/lib/XML/LibXML.pm line 11., referer: http://smeu.org/form.html
[Tue Sep 06 09:50:47 2005] [error] [client 192.168.1.1] BEGIN failed--compilation aborted at C:/progr/Perl/site/lib/XML/LibXML.pm line 11., referer: http://smeu.org/form.html
[Tue Sep 06 09:50:47 2005] [error] [client 192.168.1.1] Compilation failed in require at C:/progr/Perl/site/lib/XML/LibXSLT.pm line 7., referer: http://smeu.org/form.html
[Tue Sep 06 09:50:47 2005] [error] [client 192.168.1.1] BEGIN failed--compilation aborted at C:/progr/Perl/site/lib/XML/LibXSLT.pm line 7., referer: http://smeu.org/form.html
[Tue Sep 06 09:50:47 2005] [error] [client 192.168.1.1] Compilation failed in require at C:\\progr\\web\\www\\docs\\smeu.org\\cgi-bin\\dbupdate.pl line 7., referer: http://smeu.org/form.html
[Tue Sep 06 09:50:47 2005] [error] [client 192.168.1.1] BEGIN failed--compilation aborted at C:\\progr\\web\\www\\docs\\smeu.org\\cgi-bin\\dbupdate.pl line 7., referer: http://smeu.org/form.html
[Tue Sep 06 09:50:47 2005] [error] [client 192.168.1.1] File does not exist: C:/progr/web/www/docs/smeu.org/favicon.ico


Черт... всю сеть уже облазил с этой проблемой, нашел только рекоммендации поместить файлик libxml2.dll в папку bin папки с апачем. Не помогло...
PM MAIL ICQ   Вверх
sharq
Дата 14.9.2005, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

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



Orthenner значит криво поставил модуль!!! smile

Цитата(Orthenner @ 15.9.2005, 00:11)
Черт... всю сеть уже облазил с этой проблемой, нашел только рекоммендации поместить файлик libxml2.dll в папку bin папки с апачем. Не помогло...

Че за чушь - надо в папку bin perl!!!

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

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
sharq
Дата 14.9.2005, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

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



Цитата(Orthenner @ 15.9.2005, 00:11)
[Tue Sep 06 09:50:47 2005] [error] [client 192.168.1.1] Compilation failed in require at C:/progr/Perl/site/lib/XML/LibXSLT.pm line 7., referer: http://smeu.org/form.html

Откуда взялся этот модуль, у меня такого нет.

Так привиди логи апача при запуске скрипта check.cgi:
Код

use strict;
use XML::LibXML;
use CGI qw(-no_xhtml :standard);

print header(-charset => 'windows-1251'),
      start_html('check'),
      h2( 'Version: ' . XML::LibXML::LIBXML_DOTTED_VERSION );

my $parser = XML::LibXML->new();
print h3( 'New object is ' . $parser );

print end_html;


И давай код своего скрипта, если не секретно. smile

smile



--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
Orthenner
Дата 15.9.2005, 07:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 22.5.2004
Где: Мытищи

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



Лог Апача на твой скрипт.

Цитата

[Thu Sep 15 08:48:40 2005] [error] [client 192.168.1.113] Premature end of script headers: test.cgi
[Thu Sep 15 08:48:40 2005] [error] [client 192.168.1.113] Can't load 'C:/progr/Perl/site/lib/auto/XML/LibXML/Common/Common.dll' for module XML::LibXML::Common: load_file:\xcd\xe5 \xed\xe0\xe9\xe4\xe5\xed \xf3\xea\xe0\xe7\xe0\xed\xed\xfb\xe9 \xec\xee\xe4\xf3\xeb\xfc at C:/progr/Perl/lib/DynaLoader.pm line 206.\r
[Thu Sep 15 08:48:40 2005] [error] [client 192.168.1.113] Compilation failed in require at C:/progr/Perl/site/lib/XML/LibXML.pm line 11.\r
[Thu Sep 15 08:48:40 2005] [error] [client 192.168.1.113] BEGIN failed--compilation aborted at C:/progr/Perl/site/lib/XML/LibXML.pm line 11.\r
[Thu Sep 15 08:48:40 2005] [error] [client 192.168.1.113] Compilation failed in require at C:/progr/web/www/docs/smeu.org/cgi-bin/test.cgi line 4.\r
[Thu Sep 15 08:48:40 2005] [error] [client 192.168.1.113] BEGIN failed--compilation aborted at C:/progr/web/www/docs/smeu.org/cgi-bin/test.cgi line 4.\r
[Thu Sep 15 08:48:41 2005] [error] [client 192.168.1.113] File does not exist: C:/progr/web/www/docs/smeu.org/favicon.ico


Теперь собственно мой скрипт:
Состоит из нескольких файлов:


dbupdate.pl:

Код

#!/progr/Perl/bin/perl
use strict;

use CGI;
use XML::LibXML;
use Text::Iconv;
        
require "./gettime.pl";
require "./dbi-functions.pl";
require "./interface.pl";

#Getting data
$p=new CGI;
my $translator=Text::Iconv->new("cp1251","utf-8");

print "Content-type: text/html\n\n";

$obj=Data->new();

if($p->param('title')!="") {$obj->title($translator->convert($p->param('title')));}
print $obj->title;
if($p->param('author')!="") {$obj->author($translator->convert($p->param('author')));}
if($p->param('description')!="") {$obj->description($translator->convert($p->param('description')));}
if($p->param('img')!="") {$obj->img($translator->convert(p->param('img')));}
if($p->param('preview_img')!="") {$obj->preview_img($translator->convert($p->param('preview_img')));}
if($p->param('description')!="") {$obj->preview_text($translator->convert(substr($description,0,100)));}
$obj->datetime($translator->convert(getMysqlDatetime()));
$obj->alink($translator->convert("http:\/\/smeu.org"));

DB_Insert($obj->title,$obj->alink,$obj->description,$obj->author,$obj->datetime,$obj->preview_text,$obj->preview_img,$obj->img);

$xml_version=$translator->convert("1.0");
$rss_version=$translator->convert("2.0");
$encoding=$translator->convert("UTF-8");
$channel_title=$translator->convert("ASU news");
$site_link=$translator->convert("http:\/\/www.istus.ru\/");
$channel_description=$translator->convert("Новости сайта специальности АСУ МГСУ");
$language=$translator->convert("ru,ru-ru");
$copyright=$translator->convert("Copyright 2005, Morozzz&Mich Co");
$channel_pubDate=$translator->convert(convertDateTime($obj->datetime));
$channel_category=$translator->convert("News");
$channel_ttl=$translator->convert("60");
$channel_image=$translator->convert("http:\/\/istus.ru\/img\/channel.jpg");



$docRSS=XML::LibXML::Document->createDocument($xml_version,$encoding);
$rss=$docRSS->createElement("rss");
$rss->setAttribute("version",$rss_version);
$docRSS->setDocumentElement($rss);
    $channel=$docRSS->createElement("channel");
    $rss->appendChild($channel);
        $node=$docRSS->createElement("title");
        $text=$docRSS->createTextNode($channel_title);
        $node->appendChild($text);
    $channel->appendChild($node);
    $node=$docRSS->createElement("link");
        $text=$docRSS->createTextNode($site_link);
        $node->appendChild($text);
    $channel->appendChild($node);
    $node=$docRSS->createElement("description");
        $text=$docRSS->createTextNode($channel_description);
        $node->appendChild($text);
    $channel->appendChild($node);
    $node=$docRSS->createElement("language");
        $text=$docRSS->createTextNode($language);
        $node->appendChild($text);
    $channel->appendChild($node);
    $node=$docRSS->createElement("copyright");
        $text=$docRSS->createTextNode($copyright);
        $node->appendChild($text);
    $channel->appendChild($node);
    $node=$docRSS->createElement("pubDate");
        $text=$docRSS->createTextNode($channel_pubDate);
        $node->appendChild($text);
    $channel->appendChild($node);
    $node=$docRSS->createElement("category");
        $text=$docRSS->createTextNode($channel_category);
        $node->appendChild($text);
    $channel->appendChild($node);
    $node=$docRSS->createElement("ttl");
        $text=$docRSS->createTextNode($channel_ttl);
        $node->appendChild($text);
    $channel->appendChild($node);
    $node=$docRSS->createElement("image");
        $text=$docRSS->createTextNode($channel_image);
        $node->appendChild($text);
    $channel->appendChild($node);

$array_ref=DB_Get();
foreach my $row (@$array_ref)
{
    my($pr_id,$title,$link,$description,$author,$pubDate,$preview_text,$preview_img,$img) = @$row;
    $date=convertDateTime($pubDate);
    $item=$docRSS->createElement("item");
    $channel->appendChild($item);
        $node=$docRSS->createElement("title");
            $text=$docRSS->createTextNode($title);
            $node->appendChild($text);
        $item->appendChild($node);
        $node=$docRSS->createElement("link");
            $text=$docRSS->createTextNode($link);
            $node->appendChild($text);
        $item->appendChild($node);
        $node=$docRSS->createElement("description");
            $text=$docRSS->createTextNode($description);
            $node->appendChild($text);
        $item->appendChild($node);
        $node=$docRSS->createElement("author");
            $text=$docRSS->createTextNode($author);
            $node->appendChild($text);
        $item->appendChild($node);
        $node=$docRSS->createElement("guid");
            $text=$docRSS->createTextNode($link);
            $node->setAttribute("isPermaLink","true");
            $node->appendChild($text);
        $item->appendChild($node);
        $node=$docRSS->createElement("pubDate");
            $text=$docRSS->createTextNode($date);
            $node->appendChild($text);
        $item->appendChild($node);
        $node=$docRSS->createElement("source");
            $text=$docRSS->createTextNode($channel_title);
            $node->setAttribute("url",$site_link);
            $node->appendChild($text);
        $item->appendChild($node);
        print "Element\n";
}

open(RSSCHANNEL, "> ../rss.xml");

print RSSCHANNEL $docRSS->toString();


interface.pl:
Код

sub Data::new
{
    my $object={};
    $object->{PR_ID}=undef;
    $object->{TITLE}=undef;
    $object->{AUTHOR}=undef;
    $object->{DESCRIPTION}=undef;
    $object->{IMG}=undef;
    $object->{PREVIEW_IMG}=undef;
    $object->{ALINK}=undef;
    $object->{DATETIME}=undef;
    $object->{PREVIEW_TEXT}=undef;
    bless($object);
    return $object;
}

sub pr_id {
  my $self = shift;
  if (@_) { $self->{PR_ID} = shift }
  return $self->{PR_ID};
}

sub title {
  my $self = shift;
  if (@_) { $self->{TITLE} = shift }
  return $self->{TITLE};
}

sub author {
  my $self = shift;
  if (@_) { $self->{AUTHOR} = shift }
  return $self->{AUTHOR};
}

sub description {
  my $self = shift;
  if (@_) { $self->{DESCRIPTION} = shift }
  return $self->{DESCRIPTION};
}

sub img {
  my $self = shift;
  if (@_) { $self->{IMG} = shift }
  return $self->{IMG};
}

sub preview_img {
  my $self = shift;
  if (@_) { $self->{PREVIEW_IMG} = shift }
  return $self->{PREVIEW_IMG};
}

sub alink {
  my $self = shift;
  if (@_) { $self->{ALINK} = shift }
  return $self->{ALINK};
}

sub datetime {
  my $self = shift;
  if (@_) { $self->{DATETIME} = shift }
  return $self->{DATETIME};
}

sub preview_text {
  my $self = shift;
  if (@_) { $self->{PREVIEW_TEXT} = shift }
  return $self->{PREVIEW_TEXT};
}

1;


dbi-functions.pl
Код

#!/progr/Perl/bin/perl

use DBI;

#DB insert
sub DB_Insert
{
    $host="localhost";
    $username="Aleksei";
    $pass_sql="somepass";
    $db_name="site";

    $dbh=DBI->connect("DBI:mysql:$db_name:$host",$username,$pass_sql) || die "$!\n";
    $query="insert into news values(\"\",\"$_[0]\",\"$_[1]\",\"$_[2]\",\"$_[3]\",\"$_[4]\",\"$_[5]\",\"$_[6]\",\"$_[7]\");";
    $dbh->do("$query") || die $DBI::errstr;
    $dbh->disconnect;
}

#DB delete
sub DB_Delete
{
    $host="localhost";
    $username="Aleksei";
    $pass_sql="somepass";
    $db_name="site";
         
    $dbh=DBI->connect("DBI:mysql:$db_name:$host",$username,$pass_sql) || die "$!\n";    
    $query="delete from news where pr_id=$_[0];";
    $dbh->do("$query") || die $DBI::errstr;
    $dbh->disconnect;
    return null;
}

#DB update
sub DB_Update
{
    $host="localhost";
    $username="Aleksei";
    $pass_sql="somepass";
    $db_name="site";
         
    $dbh=DBI->connect("DBI:mysql:$db_name:$host",$username,$pass_sql) || die "$!\n";
    $query="update news values(title=\"$_[0]\",link=\"$_[1]\",description=\"$_[2]\",author=\"$_[3]\",pubDate=\"$_[4]\",preview_text=\"$_[5]\",preview_img=\"$_[6]\",img=\"$_[7]\") where pr_id=$_[8];";
    $dbh->do("$query") || die $DBI::errstr;
    $dbh->disconnect;
    return null;
}

sub DB_Get
{
    $host="localhost";
    $username="Aleksei";
    $pass_sql="somepass";
    $db_name="site";

    $dbh=DBI->connect("DBI:mysql:$db_name:$host",$username,$pass_sql) || die "$!\n";
    my $query=$dbh->prepare("SELECT * FROM news ORDER BY pubDate DESC LIMIT 1,10;");
    $query->execute();
    my $array_ref=$query->fetchall_arrayref();
    return $array_ref;
}
1;


gettime.pl:
Код

#!/progr/Perl/bin/perl

use Date::Calc qw(Day_of_Week);

#Getting time by rss standart
sub getDateTime
{
    ($sec,$min,$hour,$mday,$mon,$year,$wday)=localtime(time);
    $year+=1900;
    if($hour<10) {$hour="0".$hour;}
    if($min<10) {$min="0".$min;}
    if($sec<10) {$sec="0".$sec;}
    @months=("Jan","Feb","Mar","Apr","May","Jun","Jul","Sep","Oct","Nov","Dec");
    @day=("Sun","Mon","Tue","Wen","Thu","Fri","Sat");
    $datetime=$day[$wday].", ".$mday.' '.$months[$mon].' '.$year.' '.$hour.':'.$min.':'.$sec." GMT+3";
    return $datetime;
}


#Getting time by MySQL format
sub getMysqlDatetime
{
    ($sec,$min,$hour,$day,$mon,$year,$wday)=localtime(time);
    $year+=1900;
    $mon+=1;
    if($hour<10) {$hour="0".$hour;}
    if($min<10) {$min="0".$min;}
    if($sec<10) {$sec="0".$sec;}    
    if($mon<10) {$mon="0".$mon;}
    if($day<10) {$day="0".$day;}
    $datetime=$year.'-'.$mon.'-'.$day.' '.$hour.':'.$min.':'.$sec;
    return $datetime;
}

sub convertDateTime
{
    $datetime=$_[0];
    $year=substr($datetime,0,4);
    $mon=substr($datetime,5,2);
    $mday=substr($datetime,8,2);
    $hour=substr($datetime,11,2);    
    $min=substr($datetime,14,2);
    $sec=substr($datetime,17,2);
    $mon-=1;
    $wday=Day_of_Week($year,$mon+1,$mday);
    @months=("Jan","Feb","Mar","Apr","May","Jun","Jul","Sep","Oct","Nov","Dec");
    @day=("Sun","Mon","Tue","Wen","Thu","Fri","Sat");
    $datetime=$day[$wday].", ".$mday.' '.$months[$mon].' '.$year.' '.$hour.':'.$min.':'.$sec." GMT+3";
    return $datetime;
}
1;


Формочка стандартная:
Код

<html>
<head>
    <title>Forms</title>
</head>
<body>
        <form action="http://smeu.org/cgi-bin/dbupdate.pl" method="POST" enctype="multypart/form-data">
        <p>Title</p>
        <input type="TEXT" name="title" maxlength="100">
        <p>Author</p>
        <input type="TEXT" name="author" maxlength="100">
        <p>Description</p>
        <textarea cols="30" rows="6" name="description" wrap="virtual"></textarea>
        <p>Image URL</p>
        <input type="TEXT" name="img" maxlength="100">
        <p>Small Image URL</p>
        <input type="TEXT" name="preview_img" maxlength="100">
        <input type="SUBMIT" name="Submit">
    </form>
</body>
</html>

PM MAIL ICQ   Вверх
sharq
Дата 15.9.2005, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

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



Orthenner читай мой первый топик по установке модуля и статью здесь, ты криво поставил модули!
Только сначало удали криво установленные модули, а затем все по пунктам сделай.

А твои скрипты я сейчас проверю.

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
Orthenner
Дата 15.9.2005, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 22.5.2004
Где: Мытищи

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



ок... сейчас переставлю... Меня смущает тот факт, что в командной строке все замечательно выполняется, а через браузер нет....
PM MAIL ICQ   Вверх
sharq
Дата 15.9.2005, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

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



Orthenner да-а кодинг на перле оставляет желать лучшего...
Один вопрос: что такое return null? smile
Ладно, мой тебе совет (когда модуль поставишь) используй прагмы warnings и strict и модульный подход к программированию. Не надо постоянно коннектится и разоединяться с БД при выполнение одного запроса : коннект в начале скрипта и дисконнект в конце! Используй всю мощь модуля CGI. Если открыл файл, то и закрой его.

У тебя недопечатка в 24 строке dbupdate.pl - нехватает символа $.
И как у тебя этот скрипт мог работать под консолью??? smile
Тут даже perl -c dbupdate.pl - выдаст пару warnings.

Кто так делает:
Код

if ($p->param('title')!="") {}


Если ты хочешь проверить переменную на пустоту, то делай так
Код

if ($p->param('title')) {
  print "Не пусто"
} else {
  print "Пусто"
}


Ладно, не обижайся просто помочь хочу. smile

Я работу с БД не проверял, а так у тебя все работает. smile

Кстати, пользуйся каким-нибудь perl-редактором, очень удобно + есть встроенный браузер, чекер и др.



Orthenner убедись, что все вновь поставленные модули исправны, есть библиотека libxml2 в perl/bin и есть ini файл ParserDetails.ini в perl/site/lib/XML/SAX.

Удачи.
smile

Это сообщение отредактировал(а) sharq - 15.9.2005, 09:52


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
Guest
Дата 15.9.2005, 10:00 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я с Перлом почти незнаком... Три-четыре дня учебники почитал и все... Так что качество кода оставляет желать лучшего smile
  Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


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

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


 




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


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

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