2013-04-23 2 views
0

Я пытаюсь подключиться к удаленной DB2 через PHP. Но есть некоторые проблемы. Я уже установил клиент разработчика приложений IBM.Ошибка подключения DB2 php

phpinfo() Выход:

 

    
     IBM DB2, Cloudscape and Apache Derby support enabled 
     Module release 1.9.4 
     Module revision $Revision: 327944 $ 
     Binary data mode (ibm_db2.binmode) DB2_BINARY 
 

Тогда у меня есть PHP-файл, который выглядит как:

 

    
     $database = 'MyDB'; 
     $user = 'db2inst1'; 
     $password = 'mypassword'; 
     $hostname = '1.1.1.1'; 
     $port = 50000; 

     $conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;PORT=$port;HOSTNAME=$hostname;". 
     "PROTOCOL=TCPIP;UID=$user;PWD=$password;"; 

     $conn = db2_connect($conn_string, '', ''); 
     if ($conn) { 
      echo "connection to $database succeeded"; 
     } else { 
      echo "connection to $database failed"; 
      echo db2_conn_errormsg(); 
     } 
 

и пытается выполнить этот файл, у меня есть «подключение к MyDB не удалось ", и НЕТ видимого ответа от db2_conn_errormsg(), что на самом деле заставляет меня сбивать с толку

К сожалению, у меня нет прямого доступа к удаленному серверу с базой данных. Но несколько месяцев назад, когда я использовал другого клиента, мне удалось подключиться именно к этой базе данных. Но в то время мне не нужно было устанавливать IBM ADCL. Вот почему я могу догадаться, что проблема с этой стороны. Но даже если так, я не мог это исправить.

Извините, если я дублировал некоторый вопрос о stackoverflow, но все ответы, которые я нашел, были, к сожалению, бесполезны для меня.

Я использую Apache 2.2 и PHP 5.4. Надеюсь, вы сможете помочь.

Спасибо за любые ответы!

ответ

1

У вас есть возможность подключиться к серверу? Правильные правила порта, сервера, брандмауэра, имя пользователя, пароль, имя базы данных?

Каков SQL код, который вы получаете. Попробуйте получить код SQL с PHP, «соединение с xx не удалось» - это ваш собственный код, поэтому бесполезно вам помочь.

Вы установили клиент разработки приложений? какую версию DB2 вы используете? ADCL старый, он был для DB2 8. Поскольку DB2 9.7, клиенты имеют разные имена, и я думаю, вам нужен клиент IBM Data Server для компиляции php-модуля. Для получения дополнительной информации посетите наш сайт: http://www-01.ibm.com/support/docview.wss?uid=swg27016878

Я думаю, вам нужно каталогизировать сервер базы данных (узел) и базу данных на локальной машине с клиентом db2. Кажется, что ваш PHP-код использует драйвер ODBC, и его нужно настраивать локально.

0

строка подключения выглядит как соединение ODBC, где, как функция db2_connect в PHP необходимо: -

DATABASE=database;HOSTNAME=hostname;PORT=port;PROTOCOL=TCPIP;UID=username;PWD=password; 

Это на PHP web page.

0

Я никогда не был в состоянии получить ibm_db2 или Pdo_Ibm работает над дистанционный пульт. Они работают, если DB2 и Apache находятся на одном компьютере (например, iSeries), но не если хост подключается к удаленной DB2.

Если вы прочитали драйверы Doctrine2 PHP для каждого, вы обнаружите, что они перенаправляют на ODBC, если хост не является «localhost» или «127.0.0.1».

Этот код работает для меня

<?php 
if (!$db = odbc_connect ("AS400", $user, $password)) 
    echo 'error!'; 

$result = odbc_exec($db, "select count(*) from $table"); 
while (odbc_fetch_row($result)) { 
    var_dump($result); 
    print_r($result); 
    echo "\n"; 
    echo odbc_result($result, 1)."\n"; 
} 

odbc_close($db); 

AS400 это имя DSN определено в ODBC.

Смежные вопросы