|
在 Windows 2000/XP 上安装 Oracle、PHP 和 Apache
作者:Robert Clevenger
您希望使用 PHP 与 Oracle 数据库通信吗?下面我们演示将 Oracle 数据库、Apache HTTPD 服务器,以及 PHP 作为一个 Apache 模块安装到 Linux 上所需的步骤。对本例而言,我们将使用 Windows XP Professional。
软件需求:
安装 Oracle
您有两种选择。您既可以把数据库本地安装在 Windows 机器上,或者也可以决定使用您网络中另外一台机器上的 Oracle 服务器。如果您的数据库是远程的,那么只需要在这个机器上安装 Oracle 客户端。如果您的数据库是本地的,那么需要安装完整的 Oracle RDBMS Server。
安装 Apache HTTP Server
获得 Windows 上的 Apache 的最容易的方式是下载 Apache HTTP Server 的自解压可执行文件 (EXE) 包 apache_1.3.33-win32-x86-no_src.exe。要安装此机器,您只需双击此文件并遵循向导的说明。我在 C:\Program Files\Apache Group\ 下安装 Apache,不过也可以在其他任意目录下。
启动 Apache
您既可以从 command shell 启动 Apache,也可以将其作为服务进行安装。在测试时,我通常从命令行启动和停止 Apache。
C:\Program Files\Apache Group\Apache>start Apache.exe
您还将看到新命令行外壳打开时显示下列消息:
Apache/1.3.33 (Win32) running...
现在您应该测试 Apache 是否在机器上正常启动和运行,测试方法是打开您的 web 浏览器连接到 URL http://localhost
注意:如果您使用防火墙或者如果 localhost 由于某些原因无法解析,可能需要把 "localhost" 替换为机器的 DNS 名。
现在应该停止 Apache HTTP 服务器,执行下面的命令:
C:\Program Files\Apache Group\Apache>start Apache.exe -k stop
安装 PHP
您会发现这里的安装说明与您下载的 PHP 档案中包含的 install.txt 文件内的说明非常类似。请随意使用它作为指南,这里的说明只是该文档中包含的信息的一个子集。因为 Apache 已安装了,因此您现在可以安装 PHP。
安装步骤
- 将 PHP 包解压至根目录,这将产生一个类似 "C:\php-4.3.9-Win32" 的目录。
- 将 php.ini-dist 拷贝至 %SYSTEMROOT%\php.ini
- 编辑 %SYSTEMROOT%\php.ini 并执行下列操作:
- 把下面这一行解除注释(删除该行开头的分号): extension=php_oci8.dll
- 把 doc_root 设置为 Apache 的 htdocs 目录(例如:C:\Program Files\Apache Group\Apache\htdocs)
- 将下列文件复制到包含 apache.exe 应用程序的目录:
- c:\php-4.3.9-Win32\php4ts.dll
- c:\php-4.3.9-Win32\extensions\php_oci8.dll
- 编辑文件 httpd.conf 并添加下列行:
注意:
- 将 c:/php-4.3.9-Win32 替换成您的 PHP 安装位置
- 用斜线 '/' 替代反斜线 '\'
#
# This will load the PHP module into Apache.Put this line with other LoadModule lines.
#
LoadModule php4_module c:/php-4.3.9-Win32/sapi/php4apache.dll
#
# Add this with the other AddModule lines.
#
AddModule mod_php4.c
#
# This next section will add a handler for .php files, put it with other IfModule lines.
#
<IfModule mod_php4.c>
AddType application/x-httpd-php .php
AddType application/x-httpd-php .phtml
AddType application/x-httpd-php-source .phps
</IfModule>
启动 Oracle Database
启动 Oracle Database 和 Oracle Listener 涉及到使用位于控制面板下的管理工具文件夹中的 Services Applet。有两个服务必须启动。现在请启动它们。
- OracleServiceORCL
- OracleOraDb10g_home1TNSListener
注意:服务名可能会不同,但它们会极为相似,很容易判断是哪个服务。查找 "OracleSerivce{ORACLE_SID}",以及 "Oracle{ORACLE_HOME}TNSListener"
启动 Apache HTTP Server
现在您必须重新启动 Apache Server 以便测试 PHP 安装。完全象以前一样启动 Apache,并查看有没有任何错误消息。如果您在启动 Apache 时接收到错误消息,可以删除 Apache.exe 命令前面的 "start"。您将需要再打开一个命令行 Shell 来调用关闭命令。
C:\Program Files\Apache Group\Apache>Apache.exe
Apache/1.3.33 (Win32) PHP/4.3.9 running...
如果您收到任何错误,请仔细检查 httpd.conf 并纠正错误。
使用 Oracle 测试 Apache 和 PHP
使用 Oracle 测试 PHP 很简单。您只需将一个 PHP 文件放到您的 htdocs 目录中;通常为 C:\Program Files\Apache Group\Apache\htdocs。
此处有两个文件,第一个用于测试基本 PHP 安装。如果安装了 PHP,您应该看见一个大的页面,上面全部都是 PHP 配置信息。第二个文件显示 SCOTT 模式中 EMP 表的 ENAME 和 SAL 列的一部分。这要求安装 SCOTT 模式,否则您将需要更改该页面。
phptest.php
<html>
<head>
<title>PHP Installation Test</title>
</head>
<body>
<?php phpinfo(); ?>
</body>
</html>
oci8test.php
注意:如果您的 Oracle 数据库不是本地的,那么请按如下方式编辑第二行 — 用您的服务器的 TNS 条目替换 MyDatabaseTNSEntryName:
$db_conn = ocilogon( "scott", "tiger", "MyDatabaseTNSEntryName" );
<?php
$db_conn = ocilogon( "scott", "tiger" );
$cmdstr = "select ename, sal from emp";
$parsed = ociparse($db_conn, $cmdstr);
ociexecute($parsed);
$nrows = ocifetchstatement($parsed, $results);
echo "<html><head><title>Oracle PHP Test</title></head><body>";
echo "<center><h2>Oracle PHP Test</h2><br>";
echo "<table border=1 cellspacing='0' width='50%'>\n\<tr>\n";
echo "<td><b>Name</b></td>\n<td><b>Salary</b></td>\n</tr>\n";
for ($i = 0; $i < $nrows; $i++ )
{
echo "<tr>\n";
echo "<td>" .$results["ENAME"][$i] ."</td>";
echo "<td>$ " . number_format($results["SAL"][$i], 2)."</td>";
echo "</tr>\n";
}
echo "<tr><td colspan='2'> Number of Rows:$nrows</td></tr></table>";
echo "<br><em>If you see data, then it works!</em><br></center></body></html>\n";
?>
结论
您现在应该已经安装并配置了 Oracle Database、Apache HTTPD Server 和 PHP。现在,您既可以开始学习 PHP,也可以开始在 Oracle 平台上编写 PHP 应用程序。
Robert Clevenger 是 Oracle 应用程序开发工具首席产品经理。Robert 于 1997 年 加入 Oracle,支持 Windows 平台的开发人员。1999 年,Robert 加入了 JDeveloper 的开发小组并帮助创建该产品的 Oracle9i java 版本。在发布了 Oracle9i 的首个版本之后,他转至产品管理部门工作,重点负责开放源代码项目以及与 Oracle 合作伙伴更加密切地合作。
|