通过 Zend Core 使用 PHP 脚本访问 i5/OS 上的 DB2

学习在 i5/OS® 上使用 Zend Core for i5/OS 产品进行 PHP 数据库应用程序开发。另外,您还将学习如何安装 Zend Core,以及如何部署和运行用于访问存储在 DB2® Universal Database™ (DB2 UDB) for iSeries™ 数据库中的数据的 PHP 脚本。

Suita Gupta, GTS 信息管理支持, IBM Malaysia

Suita Gupta 的照片Suita Gupta 是位于英国 Farnborough 的 IBM GTS Information Management Support 团队的成员。她向客户提供 DB2 技术支持。Suita 曾经在马来西亚吉隆坡的 IBM Innovation Center 担任技术顾问,帮助 ISV 实现 DB2 迁移。


developerWorks 投稿作者

2006 年 9 月 05 日

什么是 PHP?

PHP 是 Hypertext Preprocessor 的缩写。PHP 基本上是一种脚本语言,通常用于快速开发 Web 页面。PHP 的最大优点是对于初学者来说比较容易学习。正如本文所展示的那样,开发用于访问 DB2 数据的简单 PHP 脚本也非常容易。可以将 PHP 脚本嵌入在 HTML 脚本中,用于在 Web 页面上显示 DB2 结果。

什么是 Zend Core for i5/OS?

Zend Core for i5/OS 是一款非常新的产品,在撰写本文之际,它的早期访问代码(Early Access Code)已经可以下载和测试了。这是一款令人兴奋的产品,因为我们第一次可以开发和运行完全与 i5/OS 平台集成的 PHP 脚本。在此之前,为了运行 PHP,需要设置一个 PASE 环境,编译 PHP,而且还要完成一系列的设置步骤。而有了 Zend Core 产品之后,则可以在 i5/OS 平台上享受开放、集成的 PHP 环境。

如何设置环境?

本文使用 Zend Core for i5/OS 的早期访问版本 V1.3.1。

在 iSeries 服务器上,需要有以下设置:

  1. 您的计算机应该处于 V5R4 级别,带有最新的软件临时修复程序(PTF)。
  2. 在安装 Zend Core for i5/OS 产品之前,必须创建好 /usr/local IFS 目录。如果该目录不存在,则产品安装会失败,并遇到如图 1 和图 2 所示的错误:
    图 1. 安装错误
    安装错误
    图 2. 安装错误
    安装错误
  3. 确保安装了下列所有产品。您可以输入 Go Licensed Program (GO LICPGM) 命令,并选择 Option 10 (Display),以便查看这些产品是否已经安装在计算机上:
    描述产品选项特许程序
    Portable App Solutions Environment335722ss1
    Qshell305722ss1
    System Openness Includes135722ss1
    Digital Certificate Manager345722ss1
    IBM Portable Utilities for i5/OSbase*5733sc1
    OpenSSH, OpenSST, Zlib15733sc1
  4. 最后,为了访问 Zend Core for i5/OS Administration Console,可使用 Internet Explorer 5.5 及以上版本,注意要启用 cookies 和 pop-ups。

安装 Zend Core for i5/OS

检查了安装 Zend Core 产品的先决条件之后,便可以安装该产品了。

  1. 在 iSeries 服务器上,使用
    CRTSAVF FILE(QGPL/ZCORESAVF)

    命令创建一个 savf 文件,并将安装 savf 文件通过 FTP 传送到 iSeries 服务器,放在上述 savf 文件中。
  2. 使用以下命令恢复对象:
    RSTOBJ OBJ(ZENDRSTPRD) SAVLIB(ZENDCORE) DEV(*SAVF)
    SAVF(QGPL/ZCORESAVF) MBROPT(*ALL) ALWOBJDIF(*ALL) RSTLIB(QGPL)
    图 3. 恢复对象
    恢复对象
  3. 像下面这样开始安装。不断按 Enter 键,直到进入步骤 4:
    CALL PGM(QGPL/ZENDRSTPRD)
    图 4. 开始安装
    开始安装
    图 5. 安装
    安装
    图 6. 安装
    安装
  4. 默认密码是 ZEND。这个密码是大小写敏感的。本文一直沿用这个默认密码。
    图 7. 输入密码
    输入密码
  5. 一旦看到如图 8 所示的屏幕,就知道产品正在安装。
    图 8. 安装完成
    安装完成

稍等片刻,当安装结束时,您将回到 i5/OS 主菜单。这表明安装成功。

之后,您可以尝试在 Web 浏览器中通过地址 http://<ipaddress>:8000/ZendCore 访问 Zend Core 用户界面。其中,<ipaddress> 是指 iSeries 服务器的 IP 地址。使用安装产品时输入的密码 ZEND 进行登录。

图 9. 登录屏幕
登录屏幕

如果登录成功,则进入 Zend Core 用户界面。通过这个界面,可以管理、监控和测试服务器。

在 Control Center 菜单下,有三个主选项卡:

  • 从 System Overview 选项卡中,可以看到关于 PHP 版本的信息和 Web 服务器的详细信息,另外还有关于磁盘空间的信息。在这个选项卡中,可以选择重新启动服务器。
  • PHPinfo 选项卡显示来自 php.ini 文件的信息。
  • Benchmark 选项卡提供对特定 URL 进行基准测试的功能。您可以获取诸如测试的持续时间、每秒钟的总请求数、失败的请求之类的详细信息。

通过 Configuration 菜单可以配置 php.ini 文件、扩展和其他 Zend 产品中的值。最后,Documentation 菜单包含了参考信息,另外还有一些搜索功能,用于查找参考文档。

图 10. Zend Core 用户界面
Zend Core 用户界面

如果不能看到登录页面,那么请检查以下各项:

  • 确保 iSeries 上的 ZendCore HTTP Server 已经启动。
  • 检查 iSeries 服务器上的 8000 端口已经被占用。这可以通过运行 NETSTAT 命令并选择 Option 3 来做到。如果 8000 已经被占用,那么可以打开 /usr/local/Zend/apache2/conf/httpd.conf 文件并将下面这行:

Listen 8000

修改成

Listen <alternate_available_port>

然后,需要打开 IBM Web Administration 界面,在关于 ZendCore HTTP Server 的详细信息的屏幕上,进入 Reverse Proxy 选项卡。用 <alternate_available_port> 的值修改所有 Core 配置条目。 单击 Apply,然后单击 OK

图 11. HTTP Web 管理
Web 管理

然后,重新启动 Zend Core 服务器,并使用以下 URL 再次尝试访问 Zend Core 用户界面:http://<ipaddress>: <alternate_available_port>/ZendCore。

本文使用默认端口 8000。

现在来测试一个简单的 PHP 脚本。将下列代码保存在 /usr/local/Zend/apache2/htdocs 下一个名为 hello.php 的文件中:

<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php echo '<p>Hello World: Trying out PHP on i5/OS</p>'; ?>
</body>
</html>

您可以在浏览器中通过以下 URL 来测试这个脚本: http://<ipaddress>:<alternate_available_port>/hello.php。如果看到如图 12 所示的输出,则说明 Zend Core 产品正在为您的 PHP 页面服务。

图 12. 结果
结果

一个简单的连接到 DB2 UDB for iSeries 的 PHP 脚本

如果您能看到如图 12 所示的结果,那么可以继续编写一个访问 DB2 UDB for iSeries 数据的 PHP 脚本。在开始之前,先创建下面这个表,并插入一些数据到这个表中。

create table QGPL.cust (custname char(15), custage integer, custcity char(20))
insert into QGPL.cust(custname, custage, custcity) values ('Suita' , 27, 'Kuala Lumpur')

部署和测试脚本

<table width="75%" border="1" cellspacing="1" cellpadding="1" bgcolor="#eeeeee">
<tr> <td><b>Customer Name</b></td> <td><b>Customer Age</b></td>
<td><b>Customer City</b></td> </tr>
<?php
//Establish connection to database
$host = "<RDB_name>";
$conn = db2_connect ($host,"<userid>", "<password>");
$query = "Select * from QGPL.customer";
//Execute query
$queryexe = db2_exec($conn, $query) ;
//Fetch results
print ("<b>The result of the query is:</b>\n");
while(db2_fetch_row($queryexe)) {
 $custname = db2_result($queryexe, 'CUSTNAME');
 $custage = db2_result($queryexe, 'CUSTAGE');
 $custcity = db2_result($queryexe, 'CUSTCITY');
//Put the results in an HTML table.
print("<tr bgcolor=#ffffff>\n");
print("<td>$custname</td>\n");
print("<td>$custage</td>\n");
print("<td>$custcity</td>\n");
print("</tr>\n");
}
?>

可以通过发出 WRKRDBDIRE 命令来查看 <RDB_Name>,也可以在 iSeries Navigator 中查看 RDB 名称。展开您正在使用的 iSeries 机器,查看 Databases 区域。<userid> 和 <password> 是有权限执行 QGPL.cust 表上的选择操作的有效用户 ID 和密码。

将以上代码保存在 /usr/local/Zend/apache2/htdocs 目录下一个名为 DB.php 的文件中,然后在浏览器中通过以下 URL 来访问它: http://<ipaddress>:<alternate_available_port>/DB.php。

您应该可以看到如下图所示的输出:

图 13. 结果
结果

结束语

本文的目的是介绍如何部署使用 Zend Core for i5/OS 产品访问 DB2 UDB for iSeries 数据的 PHP 脚本。本文提供的简单步骤应该可以帮助您深入编写更复杂的操纵 DB2 UDB for iSeries 数据的 PHP 脚本。通过 ibm_db2 函数,可以执行选择、预先选择、插入、更新和删除,可以调用存储过程,还可以检索数据库的元数据信息。要获得关于使用所有 ibm_db2 函数的更详细的信息和示例代码,请参考本文的 参考资料 部分。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management, Open source
ArticleID=157534
ArticleTitle=通过 Zend Core 使用 PHP 脚本访问 i5/OS 上的 DB2
publish-date=09052006