首页 php教程 php手册 为Linux和Windows安装PHP和Oracle10g

为Linux和Windows安装PHP和Oracle10g

Jun 06, 2016 pm 07:57 PM
linux php windows 安装

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 Oracle 10g Instant Client(免费下载)是PHP 与远程 Oracle 数据库连接的最简单方式,它只需要安装三个库。 PHP 访问 Oracle 的当前 API 所使用的 Instant Client 库称作 OCI8.(此 C 接口的名称最

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

Oracle 10g Instant Client(免费下载)是PHP 与远程 Oracle 数据库连接的最简单方式,它只需要安装三个库。

PHP 访问 Oracle 的当前 API 所使用的 Instant Client 库称作 OCI8.(此 C 接口的名称最早是在 Oracle8 中引入的。)PHP Oracle 8 函数 可以直接调用 Oracle 8.1.7、9.x 或 10.x,或者也可以为了方便起见,使用可选的抽象类,如 PEAR MDB2 和 ADOdb。

Instant Client 也可以使用老版本的 PHP“oracle”扩展,但它调用不赞成使用的 Oracle API。PHP 界或 Oracle 建议不要使用此扩展进行新的开发。

要在 Apache 上将 Instant Client 与 PHP 4 或 连用,请遵循以下步骤。需要一个现有的 Oracle 数据库;Instant Client 不提供 Oracle 数据库。通常情况下,此数据库将位于其他计算机上。如果数据库位于本地,则 Oracle 组件一般早已可用,从而不需要 Instant Client。

软件需求: 软件 附注
Oracle Instant Client 下载“Instant Client Package - Basic”。在 Linux 上,还应下载“Instant Client Package - SDK”。
Apache HTTPD Server PHP 界仍推荐 Apache 1.3
PHP ― PHP 超文本处理器 4.3 版或更高版本

在 Windows 上启用 PHP OCI8 扩展

Instant Client 二进制文件是 PHP 的 Windows 预构建二进制文件的补充。

下载 PHP 二进制压缩文件(不是安装程序版本)和 Apache。按照 PHP 手册中的 Windows 系统上的安装安装它们。OTN 的开放源代码开发人员中心包含有用背景资料的链接,如“在 Windows 2000/XP 上安装 Oracle、PHP 和 Apache”,它介绍了如何安装传统、完整的 Oracle 10g 版本(Instant Client 不需要此版本)。

继续操作之前检查 PHP 是否正常运行。此阶段未启用 Oracle 支持。

从 OTN 的 Instant Client 页面下载用于 Windows 的 Instant Client Basic 程序包。此压缩文件的大小大约为 30MB。

创建一个子目录(例如,c:\instantclient10_1),然后从压缩文件中复制以下库:

oraociei10.dll
orannzsbb10.dll
oci.dll
这三个文件的总大小大约为 80MB。

要使用 PHP 老版本的“oracle”扩展(在 php.ini 中使用“extension=php_oracle.dll”启用),则复制 ociw32.dll 而非 oci.dll。

编辑此环境,将 c:\instantclient10_1 添加到 PATH 中(位于其他 Oracle 目录之前)。

例如,在 Windows 2000 上,依次单击“开始”->“设置”->“控制面板”->“系统”->“高级”->“环境变量”,编辑系统变量列表中的 PATH。

如果使用了 tnsnames.ora 文件定义 Oracle Net 服务名称,则将 tnsnames.ora 复制到 c:\instantclient10_1,并将用户环境变量 TNS_ADMIN 设置为 c:\instantclient10_1。也可以在用户环境变量 LOCAL 中定义默认的服务名称。

设置必要的 Oracle 全球化语言环境变量,如 NLS_LANG。如果没有设置,则使用默认的本地环境。有关更多详细信息,请参见 Oracle PHP 应用程序全球化概述。

无需设置不必要的 Oracle 变量,如 ORACLE_HOME 和 ORACLE_SID。

编辑 php.ini,并不要将 OCI8 扩展设为注释:

extension=php_oci8.dll

将 extension_dir 指令设置为完整的 PHP 扩展 DLL 路径。在 PHP 4 中,DLL 位于 PHP 软件的“extensions”子目录中。在 PHP 5 中,它们位于“ext”中。

重新启动 Apache。

要检查是否配置了扩展,请在 web 服务器可以读取的地方创建一个简单的 PHP 脚本。

phpinfo();
?>

使用“http://”URL 将此脚本加载到浏览器中。浏览器页面应包含一个显示“OCI8 Support enabled”的“oci8”部分。

在 Linux 上启用 PHP OCI8 扩展

要在 Linux 上添加 Oracle 连接,需要重新编译 PHP。

开放源代码开发人员中心包含有用背景资料的链接,如在 Linux 上安装 Oracle、PHP 和 Apache,它介绍了如何安装传统、完整的 Oracle 10g 版本(Instant Client 不需要此版本)。

下载并安装 Apache。例如,在您的主目录中安装它:
cd apache_1.3.31
./configure --enable-module=so --prefix=$HOME/apache --with-port=8888
make
make install

编辑 $HOME/apache/conf/httpd.conf 并添加:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

下载并解压缩 PHP。

从 OTN 上的 Instant Client 页面下载 Basic 和 SDK Instant Client 程序包。这两个 RPM 的总大小大约为 30MB。

以 root 用户的身份安装 RPM。

rpm -Uvh oracle-instantclient-basic-10.1.0.3-1.i386.rpm
rpm -Uvh oracle-instantclient-devel-10.1.0.3-1.i386.rpm

第一个 RPM 将 Oracle 库置于 /usr/lib/oracle/10.1.0.3/client/lib 中,第二个 RPM 在 /usr/include/oracle/10.1.0.3/client 中创建头 (header)。

备份此补丁,然后将它应用于 PHP 的 ext/oci8/config.m4。该补丁的行号是基于 PHP 4.3.9 的。如果已修复了 PHP 错误 31084(很有可能已在 PHP 4.3.11 和 5.0.4 中修复),则不需要此补丁。
如果使用的是 PHP 4.3.9 或 4.3.10,则可以将此补丁保存到一个文件中(如 php_oci8ic_buildpatch),然后使用以下命令安装它:

patch -u config.m4 php_oci8ic_buildpatch

此补丁创建一个新的 PHP 配置参数:--with-oci8-instant-client[=DIR].在 Linux 上,默认情况下,它使用从 RPM 中安装的最新版本的 Instant Client。可以指定 Oracle 库所在的目录来使用其他版本。无论在哪种情况下,都将自动使用正确的 SDK 头。

新参数与现有的 --with-oci8 参数互斥。

例如:在非 Linux 平台上,将 Instant Client 程序包解压缩到您所选择的目录中。--with-oci8-instant-client 参数将需要明确指定此目录;例如,--with-oci8-instant-client=/home/instantclient10_1。应将 Instant Client SDK 解压缩到与基本程序包相同的目录中,以便修改后的配置脚本可以找到头文件的子目录。

在顶层 PHP 目录中重新构建“configure”脚本。
cd php-4.3.9
rm -rf autom4te.cache config.cache
./buildconf --force

使用新选项运行 configure。此示例使用安装在主目录中的 Apache。

./configure \
--with-oci8-instant-client \
--prefix=$HOME/php --with-apxs=$HOME/apache/bin/apxs \
--enable-sigchild --with-config-file-path=$HOME/apache/conf

重建 PHP。

make
make install

将 PHP 配置复制到 --with-config-file-path 指定的位置

cp php.ini-recommended $HOME/apache/conf/php.ini

将 LD_LIBRARY_PATH 设置为 /usr/lib/oracle/10.1.0.3/client/lib 并重新启动 Apache。
如果使用了 tnsnames.ora 文件定义 Oracle Net 服务名称,则将 TNS_ADMIN 设置为包含此文件的目录。

启动 Apache 之前应设置所有 Oracle 环境变量。以下脚本可以帮助完成此操作:

#!/bin/sh

APACHEHOME=/home/apache

LD_LIBRARY_PATH=/usr/lib/oracle/10.1.0.3/client/lib:${LD_LIBRARY_PATH}
TNS_ADMIN=/home
export LD_LIBRARY_PATH TNS_ADMIN

echo Starting Apache
$APACHEHOME/apachectl start

要确认是否配置了扩展,请在 web 服务器可以读取的地方创建一个简单的 PHP 脚本。

phpinfo();
?>

使用类似“http://localhost:8888//phpinfo.php”的 URL 将此脚本加载到浏览器中。浏览器页面应包含一个显示“OCI8 Support enabled”的“oci8”部分。

连接到 Oracle

Oracle 连接信息被传递给 OCILogon() 来创建连接。与 Instant Client 关联的工具通常“远离”任何数据库服务器,因此必须将 Oracle Net 连接标识符与用户名和口令一起使用。对于已建立的 Oracle 数据库,连接信息有可能是众所周知的。对于新系统,此信息由 Oracle 安装程序在安装数据库时提供。此安装程序应配置了 Oracle Net 和创建了一个服务名称。

在新数据库中,可能需要将演示模式(如 HR 用户)解除锁定并向其提供口令。也可通过在 SQL*Plus 中以 SYSTEM 用户身份连接并执行以下语句来完成此操作:

ALTER USER 用户名 IDENTIFIED BY 新口令 ACCOUNT UNLOCK;

将连接信息传递给 PHP 有多种方法。第一个示例使用 Oracle 10g的 Easy Connect 语法连接到 在 mymachine 上运行的 MYDB 数据库服务中的 HR 模式。不需要 tnsnames.ora 或其他 Oracle Network 文件:

$c = OCILogon('hr', 'hr_password', '//mymachine.mydomain/MYDB');

有关 Easy Connect 的语法,请参见 Oracle 的使用 Easy Connect 命名方法文档。

或者,如果 /home/tnsnames.ora 包含:

MYDB =
(DESCRIPTION=
(ADDRESS = (PROTOCOL = TCP)(HOST = mymachine.mydomain)(PORT = 1521))
(CONNECT_DATA=
(SERVER = DEDICATED)
(SERVICE_NAME = MYDB)
    )
  )

且 TNS_ADMIN 环境变量设置为 /home(在启动 Apache 之前),则连接字符串可以为:

$c = OCILogon('hr', 'hr_password', 'MYDB');

如果环境变量 LOCAL(在 Windows 上)或 TWO_TASK (在 Linux 上)设置为 MYDB,则可以使用以下代码生成与 MYDB 连接:

$c = OCILogon('hr', 'hr_password');

使用 Oracle

当基本连接可以使用时,试着运行一个简单的脚本 testoci.php。根据您的数据库修改该连接的详细信息并在浏览器中加载它。此示例列出了用户 HR 拥有的所有表:

$conn = OCILogon("hr", "hr_password", '//mymachine.mydomain:port/MYDB);

$query = 'select table_name from user_tables';

$stid = OCIParse($conn, $query);
OCIExecute($stid, OCI_DEFAULT);
while ($succ = OCIFetchInto($stid, $row)) {
foreach ($row as $item) {
echo $item." ";
    }
echo "
\n";
 }

OCILogoff($conn);

 ?>

故障诊断

Oracle PHP 故障诊断常见问题解答包含有关连接 Oracle 的有用信息。

可以从 Instant Client 页面下载 Oracle 的 SQL*Plus 命令行工具来帮助解决环境问题和连接问题。另请参见 SQL*Plus Instant Client 版本说明。

检查 SQL*Plus 使用的环境是否与 phpinfo.php 显示的环境相同。

Windows 帮助

如果 phpinfo.php 脚本没有生成显示“OCI8 Support enabled”的“oci8”部分,则确认在 php.ini 中没有将“extension=php_oci8.dll”设为注释。

如果 PATH 设置错误,或找不到 Oracle 库,则启动 Apache 将显示警告:“在指定的路径中找不到动态链接库 OCI.dll。”phpinfo() 页面的 Environment 部分将显示 PATH 的值以及 PHP 实际使用的 Oracle 变量。

如果 php.ini 的 extension_dir 指令不正确,则在启动 Apache 将显示警告:“PHP 启动:无法加载动态库 php_oci8.dll。”

Linux 帮助

仔细检查是否正确修复了 config.m4。如果“configure”失败,则检查 config.log 文件。还原 config.m4,删除缓存文件,运行 ./buildconf --force and configure,验证问题是否与所做的更改相关。

确保“configure”上的时间戳是当前的。删除所有缓存文件,并在必要时重建它。

在启动 Apache 的 shell 中设置所有必要的 Oracle 环境变量。


 

为Linux和Windows安装PHP和Oracle10g

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

解释PHP中的晚期静态绑定(静态::)。 解释PHP中的晚期静态绑定(静态::)。 Apr 03, 2025 am 12:04 AM

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

在PHP API中说明JSON Web令牌(JWT)及其用例。 在PHP API中说明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

Linux系统自带Python解释器能删除吗? Linux系统自带Python解释器能删除吗? Apr 02, 2025 am 07:00 AM

关于Linux系统自带Python解释器的删除问题许多Linux发行版在安装时会预装Python解释器,它并非通过软件包管理器�...

在Linux终端中使用python --version命令时如何解决权限问题? 在Linux终端中使用python --version命令时如何解决权限问题? Apr 02, 2025 am 06:36 AM

Linux终端中使用python...

什么是PHP魔术方法(__ -construct,__destruct,__call,__get,__ set等)并提供用例? 什么是PHP魔术方法(__ -construct,__destruct,__call,__get,__ set等)并提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些?PHP的魔法方法包括:1.\_\_construct,用于初始化对象;2.\_\_destruct,用于清理资源;3.\_\_call,处理不存在的方法调用;4.\_\_get,实现动态属性访问;5.\_\_set,实现动态属性设置。这些方法在特定情况下自动调用,提升代码的灵活性和效率。

如何通过Debian日志监控系统性能 如何通过Debian日志监控系统性能 Apr 02, 2025 am 08:00 AM

掌握Debian系统日志监控是高效运维的关键,它能帮助您及时了解系统运行状况,快速定位故障,并优化系统性能。本文将介绍几种常用的监控方法和工具。利用sysstat工具包监控系统资源sysstat工具包提供了一系列强大的命令行工具,用于收集、分析和报告各种系统资源指标,包括CPU负载、内存使用、磁盘I/O、网络吞吐量等。主要工具包括:sar:全面的系统资源统计工具,涵盖CPU、内存、磁盘、网络等。iostat:磁盘和CPU统计信息。mpstat:多核CPU的统计信息。pidsta

Debian Strings能否兼容多种浏览器 Debian Strings能否兼容多种浏览器 Apr 02, 2025 am 08:30 AM

“DebianStrings”并非标准术语,其具体含义尚不明确。本文无法直接评论其浏览器兼容性。然而,如果“DebianStrings”指的是在Debian系统上运行的Web应用,则其浏览器兼容性取决于应用本身的技术架构。大多数现代Web应用都致力于跨浏览器兼容性。这依赖于遵循Web标准,并使用兼容性良好的前端技术(如HTML、CSS、JavaScript)以及后端技术(如PHP、Python、Node.js等)。为了确保应用与多种浏览器兼容,开发者通常需要进行跨浏览器测试,并使用响应式

Debian Hadoop 兼容性怎样 Debian Hadoop 兼容性怎样 Apr 02, 2025 am 08:42 AM

DebianLinux以其稳定性和安全性着称,广泛应用于服务器、开发和桌面环境。虽然目前缺乏关于Debian与Hadoop直接兼容性的官方说明,但本文将指导您如何在Debian系统上部署Hadoop。 Debian系统需求:在开始Hadoop配置前,请确保您的Debian系统满足Hadoop的最低运行要求,这包括安装必要的Java运行时环境(JRE)和Hadoop软件包。 Hadoop部署步骤:下载并解压Hadoop:从ApacheHadoop官方网站下载您需要的Hadoop版本,并将其解

See all articles