нет коннекта к mssql

h337

Новичок
нет коннекта к mssql

Поставил Slaed 2.6 на FreeBds+Apache+php5.2.2+freetds,

запускаю ручками такой скрип:

<?php
$conn = mssql_pconnect("10.20.0.22:1433", "int\name", "pass")
or die ("Can't connect to Microsoft SQL Server");

mssql_select_db('db_test2', $conn) or die ("Can't select databes");

$result = mssql_query("select * from dbtest");

for ($i = 0; $i < mssql_num_rows( $result ); ++$i)
{
$line = mssql_fetch_row($result);
print( "$line[0] - $line[1] - $line[2]\n");
}

mssql_close();
?>

[root@stat ~]# php /usr/scripts/dbtest.php
11 - привет -
22 - как дела? -
33 - тест -
44 - TEST -

из slaed не конектится

$conn = @mssql_pconnect("10.20.0.22:1433", "INT\name", "pass");
if(!$conn) die ("Can't connect to Microsoft SQL Server");
срабатывает условие die
в чем может быть дело?
 

zerkms

TDD infected
Команда форума
phpfaq.ru/debug

1. убери @
2. насколько я знаю, в конфиге freetds ты указываешь сервер + порт, а в функции коннекта - только алиас
 

tony2001

TeaM PHPClub
"INT\name" ?
может, "INT/name" ? или хотя бы 'INT\name' ?
"\n" - это перенос строки.
 

h337

Новичок
Автор оригинала: zerkms
phpfaq.ru/debug

1. убери @
2. насколько я знаю, в конфиге freetds ты указываешь сервер + порт, а в функции коннекта - только алиас
причем сдесь freetds , ведь из командной строки php нормально коннектится?

-~{}~ 24.07.08 12:53:

Автор оригинала: tony2001
"INT\name" ?
может, "INT/name" ? или хотя бы 'INT\name' ?
"\n" - это перенос строки.
$conn = mssql_pconnect("10.20.0.22:1433", "int\name", "pass") из командной строки отлично работает

командная строка:
[root@stat ~]# php /usr/scripts/dbtest.php

ответ сервера:
11 - привет -
22 - как дела? -
33 - тест -
44 - TEST -

-~{}~ 24.07.08 14:25:

причину нашел.
 

kruglov

Новичок
Главное - это оставить ее в тайне, как приятно, когда у кого-то после вас возникнет такая же проблема, он, вместо того, чтоб спрашивать, сделает поиск, а тут нету никакого решения. Вот же кайф, правда?
 

h337

Новичок
во FreeBSD по умолчанию не устанавливается локаль, нужно было выполнил две команды из командной строки
LANG=ru_RU.CP1251; export LANG
LC_ALL=ru_RU.CP1251; export LC_ALL

и перезапустил апач...
#killall -1 httpd

апач подсасывает системную локаль и все работает, без локали логин и пасс перекодируются в абракадабру и авторизация не проходит

-~{}~ 24.07.08 14:52:

кстати можно попробовать использовать setlocale в php, но это уже на любителя
 

zerkms

TDD infected
Команда форума
гхм.... странно это всё... при чём здесь локаль и кодировки символов в файле??
 

h337

Новичок
я сам уже вскрылся все это настраивая вот статейка которая мне помогла:
http://www.opennet.ru/base/dev/php_mssql.txt.html
 

h337

Новичок
нет, все латиница, мне самому интересно почему так... может есть тут опытные юниксоиды которые знают этот механизм изнури?
 

dimagolov

Новичок
странно это все... установка в системе локали 1251 это никак не решение, это костыль, который будет выходит боком много где...

какую ошибку давал mssql_pconnect? кавычки менял, как сказал Тони?

-~{}~ 24.07.08 09:24:

у тебя все переменные mssql в конфиге по default?

-~{}~ 24.07.08 09:30:

разница в режиме apache / cli наводит на мысль о правах на какой-то ресурс, но никак ни на кодировку. тем более, что ты апач наверняка пустил руками из под того же пользователя, что и cli, а не из под того, из под которого он пускается в rc.d. перепусти фрю и убедись, что я прав, а потом поменяй права на FreeTDS, чтобы из под пользователя apache ею можно было пользоваться
 

h337

Новичок
сейчас убрал локаль из системы все равно все работает
[root@stat ~]# locale
LANG=
LC_CTYPE="C"
LC_COLLATE="C"
LC_TIME="C"
LC_NUMERIC="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_ALL=

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

-~{}~ 24.07.08 16:35:

апача из под рута работает
588 root 1 8 0 14964K 11156K nanslp 0 6:36 0.00% httpd

-~{}~ 24.07.08 16:38:

кавычки не трогал
 

dimagolov

Новичок
а из под кого apache работает, если стартует из rc.d? наверняка из-под www, если правильно ставился. иначе это дырка в безопасности.
 
Сверху