Forum Webscript.Ru

Программирование => Perl => Тема начата: BonJorno от 01 Июля 2004, 11:50:57

Название: DBI-ODBC не работает через CGI
Отправлено: BonJorno от 01 Июля 2004, 11:50:57
Делаю запрос  в скрипте к MSSQL через DBD-ODBC выдает ошибку:
Use of uninitialized value in concatenation (.) or string at C:/Perl/site/lib/DBI.pm line 576.
DBI connect(\'DRIVER=SQL Server;SERVER=myserver;DATABASE=mybase\',\'user\',...) failed

Этот же скрипт пускаю из командной строки выполняется безошибочно!
В чем тут грабли?
Соединение:
$dsn="DRIVER=SQL Server;SERVER=myserver;UID=user;PWD=parol;DATABASE=mybase";
$dbh = DBI->connect("DBI:ODBC:$dsn");
Название: DBI-ODBC не работает через CGI
Отправлено: NeoNox от 01 Июля 2004, 12:06:14
perldoc DBD::ODBC
Цитировать
use DBI;
$dbh = DBI->connect(\'dbi:ODBC:DSN\', \'user\', \'password\');
Название: DBI-ODBC не работает через CGI
Отправлено: NeoNox от 01 Июля 2004, 12:10:10
и заодно
perldoc perldiag
Цитировать
Use of uninitialized value%s
           (W uninitialized) An undefined value was used as if it
           were already defined.  It was interpreted as a "" or a
           0, but maybe it was a mistake.  To suppress this warn
           ing assign a defined value to your variables.

           To help you figure out what was undefined, perl tells
           you what operation you used the undefined value in.
           Note, however, that perl optimizes your program and
           the operation displayed in the warning may not neces
           sarily appear literally in your program.  For example,
           "that $foo" is usually optimized into ""that " .
           $foo", and the warning will refer to the "concatena
           tion (.)" operator, even though there is no "." in
           your program.
Название: DBI-ODBC не работает через CGI
Отправлено: BonJorno от 01 Июля 2004, 12:31:25
На самом деле тут проблема в другом.
Если коннектишся к базе через шелл, то она позволяет это делать через windows авторизацию, а когда коннектишся со страницы то требуется авторизация через базу.
Тогда вопрос, как  сделать, чтоб с вебстраницы проходила windows авторизация?
Название: DBI-ODBC не работает через CGI
Отправлено: NeoNox от 01 Июля 2004, 12:39:17
Цитировать
BonJorno:
На самом деле тут проблема в другом.

Ошибку в скрипте сначала убери.
Потом подключайся с RaiseError => 1 и посмотрим что он ответит.
Название: DBI-ODBC не работает через CGI
Отправлено: BonJorno от 01 Июля 2004, 13:19:42
Так ошибки никакой нет, я уже сделал все работает, но через авторизацию базы.
$dbh = DBI->connect(\'dbi:ODBC:DSN\', \'Winuser\', \'password\');
работает из шелла. не работатет с вебстраницы.
$dbh = DBI->connect(\'dbi:ODBC:DSN\', \'Baseuser\', \'password\');
работает с вебстраницы.
Мне теперь просто интересно, почему из шелла достаточно windows авторизации, а с вебстраницы нужно прописывать юзера базы?
Название: DBI-ODBC не работает через CGI
Отправлено: NeoNox от 01 Июля 2004, 13:39:03
Я не уверен насчет виндовса...
Добавь эти строки и посмотри что выводится из-под консоли и в запуске через апач
print "Real UID: $<\\n";
print "Real GID: $(\\n";
print "Effective UID: $>\\n";
print "Effective GID: $)\\n"
Название: DBI-ODBC не работает через CGI
Отправлено: BonJorno от 01 Июля 2004, 14:00:07
Я вобщето юзаю IIS
в консоли по нулям.
В общем работает и хрен с ним.
Название: DBI-ODBC не работает через CGI
Отправлено: Phoinix от 01 Июля 2004, 19:17:22
BonJorno
Цитировать
Мне теперь просто интересно, почему из шелла достаточно windows авторизации, а с вебстраницы нужно прописывать юзера базы?


Потому, что из шелла запускаешь скрипт от своего имени (пользователя), а из сети интернет - от имени (пользователя) сервера, и я не думаю что пользователю IIS сервер можно делать все, что хочешь. Для етого отдельная авторизация при подключении к базе данных