PHP5 + IIS + MSSQL

SerzhikS

Новичок
ммм...а что значит дефолтного?
и я не нашел у себя в php.ini вообще extension_path. Куча extension закомментированных есть.. можешь точно строчку привести? может дописать надо? :(
 

gruz1

Новичок
Извини, торопился домой :)
Вот у меня строчка:
Код:
extension_dir = c:\php\ext\
 

SerzhikS

Новичок
попробывал подключиться к другому sql серверу (удаленному), выдало вот что:
_______________________________________________________
Warning: mssql_connect() [function.mssql-connect]: message: Login failed for user 'B-SERVER\Гость'. (severity 14) in D:\WWWroot\factor\factorplus\session\connect.php on line 16

Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: b-server in D:\WWWroot\factor\factorplus\session\connect.php on line 16
don't connect
_______________________________________________________
по моему у тебя было что то похожее... верно? как с этим справились? в sql пользователя через которого потом обращался к бд?

сам код:
_______________________________________________________
$host='b-server';
$sa='sa';
$p='';
$conn=mssql_connect($host,$sa,$p)or die("don't connect");

-~{}~ 27.12.06 15:50:

а в ISUR_NAMECOMP какой пасс ставил? это же имя IIS по умолчанию использует...

-~{}~ 27.12.06 16:27:

а из коммандной строки он выдал
______________________________________________________
php Fatal Error: Call to fined function mssql_connect() in c:\php\- on line 15
______________________________________________________
Какие то еще настройки пропустил?

-~{}~ 27.12.06 16:45:

Или может необходимо отдельно модуль php_mssql.dll в iis встраивать?

-~{}~ 27.12.06 17:57:

из php.exe все заработало...или почти все, ошибок больше не выкидывает, возращает resourse id#2, теперь актуально какое все таки имя поставили на sql-ке?
 

gruz1

Новичок
Добавь в MSSQL сервере пользователя B-SERVER\Гость

-~{}~ 28.12.06 06:10:

И еще почему-то у тебя не подхватывает php_mssql.dll. Файл должен лежать в c:\php\ext\, а extension_dir=c:\php\ext\
После этого перезагрузи IIS ;)
 

SerzhikS

Новичок
Сделал так! Похоже подключился из веб интерфейса!!! :)
теперь правда другие ошибки...

Warning: mssql_query() [function.mssql-query]: message: SELECT permission denied on object 'dostup', database 'site', owner 'dbo'. (severity 14) in D:\WWWroot\factor\factorplus\session\connect.php on line 18

Warning: mssql_query() [function.mssql-query]: Query failed in D:\WWWroot\factor\factorplus\session\connect.php on line 18

вывод
____________________________________________________
При коде :
____________________________________________________
$host='b-server';
$sa='sa';
$p='';
$conn=mssql_connect($host,$sa,$p)or die("don't connect");
mssql_select_db('[site]',$conn)or die("don't base select");
$result = mssql_query("SELECT [admin],[users] FROM [site].[dbo].[dostup]",$conn);
echo ($result);
echo ("<br> Вывод");
____________________________________________________

Это он функцию не понимает или я неправильно запрос построил?
 

gruz1

Новичок
Во, замечательно :)
Теперь установи все права на базу данных для своего пользователя и все будет работать.
 

SerzhikS

Новичок
!!!!!!!!!!!!!!!!!!!!!!!
Добился ввода как на php:
______________________
Resource id #2
______________________

Кто бы подсказал что это значит???

-~{}~ 28.12.06 10:09:

Через php какие то свои может изюминки при построении запроса к SQL?
на точно такой же запрос с коммандной строки мне sql выкидывает:
_______________________________________________________
1> 2> admin users
-------------------- --------------------
Serzh Pust

(1 row affected)

-~{}~ 28.12.06 10:10:

кое что исказил сам форум

-~{}~ 28.12.06 10:28:

Перестроил:
_______________________________________________________
$conn=mssql_connect($host,$sa,$p)or die("don't connect");
mssql_select_db('[site]',$conn)or die("don't base select");
$result = mssql_query('SELECT [admin] FROM [site].[dbo].[dostup]',$conn);
$rows = mssql_fetch_array($result);
print_r ($rows);
_______________________________________________________

Теперь выдает:

__________
Array ( [0] => Serzh [admin] => Serzh )
__________

А с помощью каких функций можно было бы получить просто Serzh? В цикл попробывать кинуть?

-~{}~ 28.12.06 11:11:

все, нашел!
$rows = mssql_fetch_array($result);

print_r ($rows[0]);
теперь дальше разбираться буду...как например мне по столбцу какому нибудь пробежаться...
 

gruz1

Новичок
PHP:
$query = 'SELECT [admin] FROM [site].[dbo].[dostup]';
$result = mssql_query($query,$conn) or die("error: ".mssql_get_last_message());
if(mssql_num_rows($result)>0) {
while($rows = mssql_fetch_array($result)) {
echo "{$rows['admin']}\n";
}
}
Все :)

-~{}~ 28.12.06 11:40:

Разница между mssql_fetch_row и mssql_fetch_array в том, что последний возвращает ассоциативный массив, добраться к которому можно как через индекс, так и по названию столбца. А в случае с mssql_fetch_row добраться можно только через индекс.
 

themax

Новичок
Автор оригинала: gruz1
Стоит как надо:
mssql.secure_connection = On

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

-~{}~ 25.12.06 09:24:

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

-~{}~ 25.12.06 09:43:

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

-~{}~ 25.12.06 09:51:

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

Посмотрим, поможет ли. Но коннект уже есть. Спасибо
Извините что вмешиваюсь, просто у меня та же проблема, ну никак не хочет коннектится к удалённому СКУЛ Сиквелу, я уже чо только не делал, я хотел спросить, как энто сделать, т.е. разрешить анонимный доступ через незашифрованный пароль?
 

gruz1

Новичок
Дело оказалось не в анонимном доступе, а в добавлении пользователя с именем машины на сервере MSSQL.
В моем случае нужно было добавить в локальные пользователи IUSR_ИМЯМАШИНЫ и все запросы будут происходить от его имени.

-~{}~ 24.01.07 07:06:

А анонимный доступ настраивается через консоль MMC, свойства сервера, далее безопасность
 

themax

Новичок
Автор оригинала: gruz1
Дело оказалось не в анонимном доступе, а в добавлении пользователя с именем машины на сервере MSSQL.
В моем случае нужно было добавить в локальные пользователи IUSR_ИМЯМАШИНЫ и все запросы будут происходить от его имени.

-~{}~ 24.01.07 07:06:

А анонимный доступ настраивается через консоль MMC, свойства сервера, далее безопасность
Каких я пользователей я уже не добавлял...не катит, а про анонимный доступ, вы имеете в виду MMC IIS? Т.е. Internet Service Manager? Если так, то у меня Web сервер Apache стоит, у енго к сожелению нет такой отстнастки, вот и не знаю как быть? А пользователя такого в СКУЛ добавлял, не пускает, ошибка та же. Будут есчо мнения?
 

gruz1

Новичок
А авторизация какая у тебя на MSSQL сервере?

-~{}~ 24.01.07 07:36:

А как называется имя компьютера, где стоит сикул?
 

themax

Новичок
Автор оригинала: gruz1
А авторизация какая у тебя на MSSQL сервере?
Авторизация стоит смешанная, а комп так иназываеца SQL и альяс я так назвал SQL и главно локально СКУЛ посадил, туда коннектица, а вот к ремут серваку не хочет. Винда там стоит WIn server 2000, ну если энто поможет, пару статей читал, там написано как избавится от энтой проблемы на Винде 2003 сервер, там надо в локальных политиках безопастности кое что пробить, но на винде 2000 сервер таково и в помине нету, я уж и не знаю что делать? Из за энтого вся работа стоит?
 

gruz1

Новичок
Покажи строчку mssql_connect(), как вызываешь.
И имя компьютера, на котором база данных установлена
 

themax

Новичок
Автор оригинала: gruz1
Покажи строчку mssql_connect(), как вызываешь.
И имя компьютера, на котором база данных установлена
Вот полный скрипт, посмотрите што не так?
PHP:
ini_set( 'display_errors' , '1' ); 
 error_reporting(E_ALL);  
$myServer = "SQL";  
$myUser = "max";  $myPass = "187"; 
 $myDB = "Northwind"; 
 print ("Attempting to connect to MSSQL - <br>");     
 $s = mssql_connect($myServer, $myUser, $myPass)  
or die("Couldn't connect to SQL Server on $myServer");   
 $d = mssql_select_db($myDB, $s)  
or die("Couldn't open database $myDB");    
$query = "SELECT TitleOfCourtesy+' '+FirstName+' '+LastName AS Employee ";  
$query .= "FROM Employees ";  $query .= "WHERE Country='USA' AND Left(HomePhone, 5) = '(206)'";    
$result = mssql_query($query);  
$numRows = mssql_num_rows($result);    echo "<h1>" 
. $numRows . " Row" . ($numRows == 10 ? "" : "s") . " Returned </h1>";    while($row = mssql_fetch_array($result))  {  echo "<li>" . $row["Employee"] . "</li>";  }    ?>    ?>
 

gruz1

Новичок
Опять ты не делаешь того, что о чем я тебя прошу - имя компьютера какое?
SQL сервер не разрешает подключение к нему, т.к. анонимный доступ запрещен. Попробуй добавить пользователя IUSR_ИМЯ_МАШИНЫ_ГДЕ_SQL_СТОИТ в оснастке MMC
 

themax

Новичок
Автор оригинала: gruz1
Опять ты не делаешь того, что о чем я тебя прошу - имя компьютера какое?
SQL сервер не разрешает подключение к нему, т.к. анонимный доступ запрещен. Попробуй добавить пользователя IUSR_ИМЯ_МАШИНЫ_ГДЕ_SQL_СТОИТ в оснастке MMC
Имя компьютра SQL, так и зовётся, в MMC SQL-a в разделе Security-Login добавил пользователя IUSER_NET3_2_3 (net3_2_3 это имя моего копма), дал ему соответствующие права
Ошибка Изменилась, теперь ругается
PHP:
Warning: mssql_connect() [function.mssql-connect]: 
message: Login failed for user 'KGU\NET3_2_3$'. (severity 14) 
in C:\www\html\Index.php on line 20
 
Сверху