PHP / Linux到AS / 400-db2 [英] PHP/Linux to AS/400-db2

查看:428
本文介绍了PHP / Linux到AS / 400-db2的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我正在尽可能多地使用这个IBM指南((pSeries)虽然我们无法获得GUI配置实用程序的工作。)



http://www-03.ibm.com/systems/i/soft...ide /index.html



我下载并成功安装了iSeriesAccess驱动程序和先决条件。

 
rpm -i iSeriesAccess-5.4.0-1.6.i386.rpm

我已经配置了这些文件来定义驱动程序/ DNS:



/etc/odbc.ini和/etc/odbcinst.ini

 
[iSeries Access ODBC驱动程序]
描述=适用于Linux ODBC驱动程序的iSeries访问
驱动程序= /opt/ibm/iSeriesAccess/lib/libcwbodbc.so
Setup = /opt/ibm/iSeriesAccess/lib/libcwbodbcs.so
Driver64 = /opt/ibm/iSeriesAccess/lib64/libcwbodbc.so
Setup64 = / opt / ibm / iSeriesAcce ss / lib64 / libcwbodbcs.so
线程= 2
DontDLClose = 1
用法计数= 1

文件/etc/odbc.ini是空的,所以我添加了这个配置:

 
[AS400]
描述= iSeries Access ODBC驱动程序
驱动程序= iSeries访问ODBC驱动程序
系统= 172.999.999.999(从netstat选项1)
UserID = my_user
密码= my_pass
命名= 0
DefaultLibraries = QGPL
数据库=
ConnectionType = 0
CommitMode = 2
ExtendedDynamic = 1
DefaultPkgLibrary = QGPL
DefaultPackage = A / DEFAULT(IBM) 2,0,1,0,512
AllowDataCompression = 1
LibraryView = 0
AllowUnsupportedChar = 0
ForceTranslation = 0
Trace = 1
DSN = AS400

我假设这些工作正常,因为我可以运行

 
isql -v AS400

,我连接成功到db2数据库可以从Linux框执行查询。



但是,我已经无法在Linux框中的PHP中找到make和ODBC连接。
还有另外一种方法来测试PHP的DSN?或获得更详细的错误信息?

 
$ server =172.999.999.999;
//尝试使用系统名称和AS400,dsn名称
$ user =my_user;
$ pass =my_pass;

$ conn = odbc_connect($ server,$ user,$ pass);
if($ conn == false){
echo无法连接到数据库...
;
}

结果:

 
**无法连接到数据库... **

phpinfo()显示php是使用unixODBC编译的,unixODBC已启用



任何帮助都不胜感激!

解决方案

odbcinst.ini和odbc.ini配置文件。 odbc.ini中是否设置了正确的数据库名称/默认库?我按照以下说明顺利完成:



http://werk.feub.net/2010/11/ingredients-php-db2-and-unixodbc/



一个区别是我发现一个包含libXm.so.3的openmotif版本。



http:// rpm .pbone.net / index.php3 / stat / 3 / limit / 2 / srodzaj / 1 / dl / 40 / search / libXm.so.3 / field [] / 1 / field [] / 2

安装php-odbc后重新启动apache。



/etc/odbc.ini

  [ISERIES] 
描述= iSeries访问ODBC驱动程序DSN for iSeries
驱动程序= iSeries访问ODBC驱动程序
System = 192.168。 1.1
UserID = MYUSER
密码= MYPASSWORD
命名= 0
DefaultLibraries = QGPL
数据库=
ConnectionType = 0
CommitMode = 2
ExtendedDynamic = 0
DefaultPkgLibrary = QGPL
DefaultPackage = A / DEFAULT(IBM),2,0,1,0,512
AllowDataCompression = 1
LibraryView = 0
AllowUnsupportedChar = 0
ForceTranslation = 0
Trace = 0

示例PHP:

 <?php 
如果(!$ db = odbc_connect(ISERIES,MYUSER,MYPASSWORD))
echo'error!';

$ result = odbc_exec($ db,SELECT * FROM MYUSER.TABLENAME);
while(odbc_fetch_row($ result)){
echo odbc_result($ result,ID)。\\\
;
}

odbc_close($ db)
?>


I am trying to get php on Linux Centos server access as/400 (iSeries) db2 database.

I am using this IBM guide as much as possible, (though we could not get GUI configuration utility working.)

http://www-03.ibm.com/systems/i/soft...ide/index.html

I downloaded and successfully installed iSeriesAccess drivers and pre-requisites.

rpm -i iSeriesAccess-5.4.0-1.6.i386.rpm

I have configured these files to define drivers/DNS:

/etc/odbc.ini and /etc/odbcinst.ini

[iSeries Access ODBC Driver]
Description          = iSeries Access for Linux ODBC Driver
Driver               = /opt/ibm/iSeriesAccess/lib/libcwbodbc.so
Setup                = /opt/ibm/iSeriesAccess/lib/libcwbodbcs.so
Driver64             = /opt/ibm/iSeriesAccess/lib64/libcwbodbc.so
Setup64              = /opt/ibm/iSeriesAccess/lib64/libcwbodbcs.so
Threading            = 2
DontDLClose          = 1
UsageCount           = 1 

file /etc/odbc.ini was empty so I added this configuration:

[AS400]
Description     = iSeries Access ODBC Driver
Driver          = iSeries Access ODBC Driver
System          = 172.999.999.999             (from netstat option 1)
UserID          = my_user
Password        = my_pass
Naming          = 0
DefaultLibraries  = QGPL
Database          =
ConnectionType    = 0
CommitMode        = 2
ExtendedDynamic   = 1
DefaultPkgLibrary = QGPL
DefaultPackage    = A/DEFAULT(IBM),2,0,1,0,512
AllowDataCompression  = 1
LibraryView           = 0
AllowUnsupportedChar  = 0
ForceTranslation      = 0
Trace           = 1
DSN             = AS400 

I assume these are working because I can run

isql -v AS400

and I connect successfully to db2 database can perform queries from Linux box.

However I have been unable to get make and ODBC connection in PHP on the Linux box. Is there another way to test DSN from php? or get more detailed error information?

$server="172.999.999.999";    
    // tried with both system name and "AS400", the dsn name
$user="my_user"; 
$pass="my_pass";

$conn=odbc_connect($server,$user,$pass);
if ($conn == false) {
  echo "Not able to connect to database...
"; }

result:

**Not able to connect to database...** 

phpinfo() shows that php was compiled with unixODBC and unixODBC is enabled.

any help is appreciated!

解决方案

Try double checking your odbcinst.ini and odbc.ini config files. Do you have the correct database name/default library set in odbc.ini? I had success following these instructions:

http://werk.feub.net/2010/11/ingredients-php-db2-and-unixodbc/

One difference is that I found a version of openmotif that included libXm.so.3.

http://rpm.pbone.net/index.php3/stat/3/limit/2/srodzaj/1/dl/40/search/libXm.so.3/field[]/1/field[]/2

Restart apache after installing php-odbc.

/etc/odbc.ini

[ISERIES]
Description = iSeries Access ODBC Driver DSN for iSeries
Driver = iSeries Access ODBC Driver
System = 192.168.1.1
UserID = MYUSER
Password = MYPASSWORD
Naming = 0
DefaultLibraries = QGPL
Database =
ConnectionType = 0
CommitMode = 2
ExtendedDynamic = 0
DefaultPkgLibrary = QGPL
DefaultPackage = A/DEFAULT(IBM),2,0,1,0,512
AllowDataCompression = 1
LibraryView = 0
AllowUnsupportedChar = 0
ForceTranslation = 0
Trace = 0

Sample PHP:

<?php
if (!$db = odbc_connect ( "ISERIES", "MYUSER", "MYPASSWORD") )
    echo 'error!';

$result = odbc_exec($db, "SELECT * FROM MYUSER.TABLENAME");
while (odbc_fetch_row($result)) {
    echo odbc_result($result, "ID")."\n";
}

odbc_close($db)
?>

这篇关于PHP / Linux到AS / 400-db2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆