PHP 是 Hypertext Preprocessor 的缩写。PHP 基本上是一种脚本语言,通常用于快速开发 Web 页面。PHP 的最大优点是对于初学者来说比较容易学习。正如本文所展示的那样,开发用于访问 DB2 数据的简单 PHP 脚本也非常容易。可以将 PHP 脚本嵌入在 HTML 脚本中,用于在 Web 页面上显示 DB2 结果。
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 服务器上,需要有以下设置:
- 您的计算机应该处于 V5R4 级别,带有最新的软件临时修复程序(PTF)。
- 在安装 Zend Core for i5/OS 产品之前,必须创建好 /usr/local IFS 目录。如果该目录不存在,则产品安装会失败,并遇到如图 1 和图 2 所示的错误:
图 1. 安装错误
图 2. 安装错误
- 确保安装了下列所有产品。您可以输入 Go Licensed Program (
GO LICPGM) 命令,并选择 Option 10 (Display),以便查看这些产品是否已经安装在计算机上:描述 产品选项 特许程序 Portable App Solutions Environment 33 5722ss1 Qshell 30 5722ss1 System Openness Includes 13 5722ss1 Digital Certificate Manager 34 5722ss1 IBM Portable Utilities for i5/OS base* 5733sc1 OpenSSH, OpenSST, Zlib 1 5733sc1
- 最后,为了访问 Zend Core for i5/OS Administration Console,可使用 Internet Explorer 5.5 及以上版本,注意要启用 cookies 和 pop-ups。
检查了安装 Zend Core 产品的先决条件之后,便可以安装该产品了。
- 在 iSeries 服务器上,使用
CRTSAVF FILE(QGPL/ZCORESAVF)
命令创建一个 savf 文件,并将安装 savf 文件通过 FTP 传送到 iSeries 服务器,放在上述 savf 文件中。 - 使用以下命令恢复对象:
RSTOBJ OBJ(ZENDRSTPRD) SAVLIB(ZENDCORE) DEV(*SAVF) SAVF(QGPL/ZCORESAVF) MBROPT(*ALL) ALWOBJDIF(*ALL) RSTLIB(QGPL)
图 3. 恢复对象
- 像下面这样开始安装。不断按 Enter 键,直到进入步骤 4:
CALL PGM(QGPL/ZENDRSTPRD)
图 4. 开始安装
图 5. 安装
图 6. 安装
- 默认密码是 ZEND。这个密码是大小写敏感的。本文一直沿用这个默认密码。
图 7. 输入密码
- 一旦看到如图 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 用户界面
如果不能看到登录页面,那么请检查以下各项:
- 确保 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 管理
然后,重新启动 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 全球站点上的 英文原文 。
- iSeries Information Center, Version 5 Release 4:这里可以找到本文中使用的 iSeries 命令和界面。
- www.php.net:了解更多关于 PHP 的信息,并获得所有 ibm_db2 PHP 函数的详细信息。
- IBM HTTP Server for i5/OS Information Center:了解更多关于 IBM HTTP Server for i5/OS 的信息。
-
developerWorks 中国网站 Information Management 专区:了解更多关于 DB2 的信息。这里可以找到技术文档、how-to 文章、培训、下载、产品信息,等等。
- 随时关注 developerWorks 技术事件和网络广播。
获得产品和技术
- 下载
PHP for i5/OS。
- 访问
Zend 网站。
- 用可直接从 developerWorks 下载的
IBM 试用软件 构建您的下一个开发项目。
讨论
- 参与论坛讨论。
-
参与 developerWorks blogs 并加入 developerWorks 社区。
