Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > PHP. Подключение к удаленной базе Oracle.


Автор: underW 13.1.2010, 16:55
На удаленной машине стоит база Oracle. 

Успешно получается подключиться к базе с помощью Oracle Client.

Пробую подключиться с помощью PHP:

Код

$dbstr ="TEST =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = *.*.*.* )(PORT = ****)))
    (CONNECT_DATA = (SID = ***))
  )";
$conn = oci_connect('name','pass',$dbstr); 


if($conn==FALSE) {echo "не удалось подключение...";}
else
{
echo "ok!";
}

if (!$conn) {
    $e = oci_error();
var_dump($e);}


Возвращаемый результат:

Код

не удалось подключение...bool(false) 


Как с таким бороться? Как исправить? На машине стоит WinXP. строка $dbstr - 100% правильная, логин, пароль, все правильно. 

Автор: ToshaCh 14.1.2010, 12:52
Вижу я неправильно смысл третего параметра понял ты.

Примеры тут найти ты можешь:
http://php.net/manual/en/function.oci-connect.php

З.Ы. Хотя в пых-пыхе я не шарю, но вид твоей переменной $dbstr зародил во мне смутные подозрения.

Автор: Zloxa 14.1.2010, 13:19
Цитата(ToshaCh @  14.1.2010,  12:52 Найти цитируемый пост)
вид твоей переменной $dbstr

Кстате да!
Попробуй
Код

$dbstr ="(DESCRIPTION =    (ADDRESS_LIST =      (ADDRESS = (PROTOCOL = TCP)(HOST = *.*.*.* )(PORT = ****)))   (CONNECT_DATA = SID = ***))  )";

Автор: ToshaCh 14.1.2010, 13:51
Чё-то либо я не врубаюсь, либо весь окружающий мир smile

Zloxa, там же по ссылке на которую я указал вот такой пример: 
Код
$c2 = oci_connect("hr", "welcome", 'localhost/XE');


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

Добавлено через 14 минут и 33 секунды
А не, это я таки нефига не понимаю:

Там есть много вариантов, но самый простой тот который указал я. По сложнее тот который указал ТС.

Автор: Zloxa 14.1.2010, 14:08
ToshaCh, я запросто могу ошибаться smile Я лишь предложил попробовать. Наверное то следовало обозначить явно.

Автор: underW 14.1.2010, 18:40
ну вот я раньше вообще не сталкивался с Oracle как таковой, ну а вот с PHP работал smile

так вот, оказалось, что скрипт абсолютно правильный. Очень сильно грешу на Zend Server. На сайте Oraclе во всю рекомендуют его использовать как веб сервер, типа он заточен под их базу и тд. и тп. ну вот я считаю это дешевым трюком, гады. Пока я его использовал - не работало, вообще не работало, стабильно не работало, что я  только не делал. Потом снес этот Zend Server, поставил ручками отдельно Apache, PHP - все в одно мгновение заработало smile

Ну, насколько я сейчас понял, без той длиннющей строки никак не обойтись, потому как база была не локальная, а удаленная.

Вывод: считаю Zend Server - че то там такое чудит, что не дает apache возможности отправить даже запрос на коннект к удаленной базе, лучше им не пользоваться. А в остальном все хорошо, вопрос решен, ребят огромное спасибо за участие. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)