PHP5 + IIS + MSSQL

gruz1

Новичок
PHP5 + IIS + MSSQL

Добрый день, всем! Встал вопрос переноса движка для сайта с MySQL на MSSQL.
Скажу сразу - PHP настроен нормально. Запросы в командной строке (php.exe) работают нормально, PHP в IIS настроен как ISAPI расширение.
Проблема в том, что при подключении через:
PHP:
$connect = mssql_connect('server','user','pass') or die("can't connect");
Выдает:
message: Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. (severity 14)
Хотя тот же запрос, но через php.exe < mssql.php работает нормально.

Помогите, пожалуйста, с решением проблемы.
Читал много информации по данному вопросу - но решения не нашел. Поиск по PHP/Bugs не помог тоже.

Жду помощи от компетентных людей. Спасибо.
 

gruz1

Новичок
Стоит как надо:
mssql.secure_connection = On

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

-~{}~ 25.12.06 09:24:

Спасибо за добавленные ссылки. Сейчас гляну

-~{}~ 25.12.06 09:43:

Странно, не помогает все равно :-/
Скажу сразу - MSSQL стоит на удаленном компьютере в сети

-~{}~ 25.12.06 09:51:

Хм, решил проблему разрешением анонимного доступа через незашифрованный пароль :-/

Посмотрим, поможет ли. Но коннект уже есть. Спасибо
 

SerzhikS

Новичок
Добрый день, у меня та же подвязка (php5.1.6+IIS+MSSQL) не получается законнектиться. После прочтения этого поста поставил у себя (mssql.secure_connection = On), но все равно не помогло. Пишу
________________________________________________________
$host="iproxy\comarinstance";
$sa="sa";
$p="123";
mssql_connect($host,$sa,$p)or die("don't connect");
________________________________________________________
он мне выдает "don't connect" и все. php сервер стоит на той же машине что и MSSQL. Что может быть не так? И как еще можно проверить работает ли и в чем ошибка?
 

gruz1

Новичок
Причем если использовать просто php-интерпретатор с командной строки, то все работает отлично :-/

Сейчас решил проблему, нормально подключается к удаленному серверу, но опять же, средствами "чистого" php. Если же запускать как web-скрипт, то ничего не проходит и выдает ошибку
Login failed for user 'HOST\IUSR_HOST'
-~{}~ 27.12.06 11:50:

Хм, решил проблему разрешением анонимного доступа через незашифрованный пароль :-/
Запретил в целях безопасности...
 

SerzhikS

Новичок
а каким образом получить ответ от MSSQL? куда он выкидывает ошибку?
 

gruz1

Новичок
У меня прямо в браузер выкидывает :)
Видать, у тебя логины не правильные или хост не верно прописан.
Попробуй запустить тоже самое, через
Код:
%PATH_TO_PHP%\php.exe < %YOUR_FILE%.php
Если выполниться, то считай что проблема в IIS

-~{}~ 27.12.06 12:14:

А еще всегда используй
PHP:
var_dump
 

SerzhikS

Новичок
да не, логины точно правильные - я через osql.exe запросы в sql посылал он их нормально обрабатывал.
а с php.exe коммандная строка как работает? где можно прочитать про нее? если я к примеру в папку с php.exe положу connect.php и напишу в коммандной строке:
__________________________
c:\php\php.exe < connect.php
__________________________
он должен отработаться? или как правильно ему передать запрос?
 

gruz1

Новичок
Автор оригинала: SerzhikS
если я к примеру в папку с php.exe положу connect.php и напишу в коммандной строке:
__________________________
c:\php\php.exe < connect.php
__________________________
он должен отработаться? или как правильно ему передать запрос?
Так и передавай, он сразу потоком весь код воспримет.

-~{}~ 27.12.06 12:46:

Автор оригинала: Гравицапа
SerzhikS

Очевидно, в мане...
И что ты там увидишь? :)
Скорее всего читать про перенаправление вывода в командной строке, если уж на то пошло :)
Сейчас ставлю сервер на локальный компьютер, попробую заводить здесь.

Чуть позже отпишусь о результате.
 

gruz1

Новичок
Конечно рулят, если знать по какому поводу их использовать.
А в данном случае быстрее поможет логика :)
Прекращаем оффтоп ;)
 

SerzhikS

Новичок
Добился от него ошибки:
________________________________________________________
Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: iproxy\comarinstance in D:\WWWroot\factor\factorplus\session\connect.php on line 16
________________________________________________________
теперь бы еще понять что это значит?
 

gruz1

Новичок
Откуда ты взял iproxy\comarinstance?
Попробуй выполнить
PHP:
var_dump(mssql_connect('iproxy\comarinstance','sa','123'));
если не поможет, тогда просто iproxy
 

SerzhikS

Новичок
попробывал записать "c:\php\php.exe < connect.php" он обиделся на существование такого файла, ввел сперва c:\php\php.exe после Enter еще connect.php - вообще обиженно замолчал. А как ты вводишь в коммандную строку параметры? можно поточнее?

-~{}~ 27.12.06 13:57:

iproxy\comarinstance - имя моего sql сервака, то же самое название горит в sql мэнэджере. я слышал что наверняка можно посмотреть в interfacec файле? а где он расположен?

а при написании: var_dump(mssql_connect('iproxy\comarinstance','sa','123'));
выдал:
_______________________________________________________

Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: iproxy\comarinstance in D:\WWWroot\factor\factorplus\session\connect.php on line 15
bool(false)
_______________________________________________________
Остальной код я заккоментировал.
 

gruz1

Новичок
Ну запусти иначе тогда:
запусти командный интерпретатор (command.com или cmd.exe, смотря какая винда), перейти в директорию, в которой находится файл с запросом к MSSQL и в этой директории выполни:
Код:
c:\php\php.exe < твой_файл.php
Свою проблему я решил следующим образом:
попросил администратора базы данных завести пользователя IUSR_ИМЯМАШИНЫ и теперь все успешно работает :)
Всем спасибо за помощь!
 

SerzhikS

Новичок
а что все таки значит?*
Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: iproxy\comarinstance in D:\WWWroot\factor\factorplus\session\connect.php on line 15
bool(false)
 

gruz1

Новичок
Мол "не могу подключиться к ..." :)
а
PHP:
bool(false)
-> результат
PHP:
var_dump()
 

SerzhikS

Новичок
вот...
а когда настраивал подключение к sql через php ты как поступал? открыл библиотеку "extension=php_mssql.dll", добавил файл php_mssql.dll в c:\php\ , добавил в c:\windows - ntwdblib.dll, после чего перегрузил iis. Или может быть я что то не выполнил?
 

gruz1

Новичок
php_mssql.dll должен быть в extension_path, описанный в php.ini; ntwdblib.dll в c:\php\; после всего этого добавил дефолтного юзера к базе данных на сервере и перегрузил IIS.
В итоге все работает :)
 
Сверху