问题标签 [oci8]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
9028 浏览

php - 通过 PHP 连接到 Oracle 数据库

我正在开发一个连接到 Oracle 数据库的 PHP API,但不幸的是连接不起作用。首先,我实现了开发环境(oracle数据库服务器+apache服务器),一切都配置好了,我猜。问题是我没有从我写的代码中得到任何响应,即使我输入了不正确的数据。

PHP信息oci8:

PHP代码:

我还将在此处留下配置开发环境所遵循的教程:

0 投票
1 回答
123 浏览

php - 重启后无法加载 PHP OCI8 扩展

重新启动后,我在日志中收到以下错误,在重新启动之前一切正常。它在 Win 2008 服务器上运行。

我已经尝试了一切,但就是不知道发生了什么,非常感谢任何帮助?!

[Fri Nov 08 11:07:06.787392 2013] [mpm_winnt:notice] [pid 4916:tid 616] AH00418: Parent: Created child process 1704 PHP Warning: PHP Startup: Unable to load dynamic library 'c:/Program Files (x86 )/PHP/ext/php_oci8_11g.dll' - 找不到指定的过程。\r\n 在 Unknown on line 0

0 投票
2 回答
1203 浏览

php - PHP、PEAR 和 oci8 配置

我会尽快完成的。

我在 Fedora 19 系统上安装了 Oracle 11g(带有适当的数据库、用户等)、Apache 2.4.6 和 PHP 5.5.4。

我想将 PHP 连接到 Oracle。我真正想做的是下载MDB2_Driver_oci8,我认为这很容易,但是在我做这样的事情之前,PHP需要启用那个插件,所以我做了以下事情:

  • 尝试通过以下方式安装 oci8: pecl install oci8
  • 当前几次不完全奏效时,我发现出于某种原因,我需要“开发工具”-通过yum groupinstall "Development Tools"
  • 然后我后来发现PHP实际上不做oci8 - 它是PHP Devel。所以,我也必须通过yum install php-devel.
  • 然后,我终于安装了oci8。它要求 Oracle 目录,就是这样。但它说了以下内容:
    Configuration option 'php_ini' is not set to php.ini location
    You should add 'extensions=oci8.so' to php.ini

首先,我做了一个locate oci8.so- 在 /usr/lib64/php/modules/ 中找到它。
其次,我将它告诉我的内容添加到 php.ini 文件中。
第三,我检查了通常的 php_info() 测试页面——没有提到 OCI8。哦哦。
第四,运行php -i 和php -m列出的 oci8 作为模块之一。诡异的。
无奈之下,我继续下载了MDB2_Driver_oci8。也许这会解决问题。没有。

当我加载我的 PHP 网页时,它返回以下内容:
错误消息:扩展 oci8 未编译为 PHP
以及:MDB2 错误:未找到

奇怪的。然后我决定检查错误日志:
PHP 启动 - 无法加载动态库 '/usr/lib64/php/modules/oci8.so' - libclntsh.so.11.1: 无法打开共享对象文件:没有这样的文件或目录在第 0 行的未知中

现在我被困住了。我尝试进入 php.ini,发现extension_dir被注释掉了。我把它放回去了,这似乎只会破坏东西。

注意事项:

  • 我按照这个(链接)指南了解如何配置 PHP 和安装 oci8。
  • ./configure --with-oci8不起作用。Fedora 说没有这样的目录
  • 由于网页文件和实际服务器都位于同一台 PC 上,因此我没有安装 Oracle 客户端文件。
  • extension_dir 默认在 php.ini 中被注释掉。

这只是我在关于复制已经存在且正在工作但即将死去的设置的一长串问题中的一个问题。似乎每当我想解决问题时,我都必须先做X。通过做X,我发现了另一个问题,我必须通过做Y来解决这个问题,它有自己的问题等等。

任何帮助将非常感激。谢谢。

0 投票
3 回答
2100 浏览

php - PHP 到 Oracle 使用 oci8/MDB2 - _doConnect:无法建立连接

我正在使用 Oracle 11g、PHP 5.5.4、Apache 2.4.6 和 PEAR 1.9.4 运行 Linux Fedora 19 设置。除此之外,我还下载并启用了 PHP 的 OCI8 插件,并下载了 MDB2 和 MDB2_Driver_oci8。

目标是将我的网页连接到 Oracle 11g 数据库。这已经在现有设置中有效(我没有这样做),我正在尝试在新设置中复制它。

由于某种原因,在新服务器中,它不起作用。它会产生一个错误:

_doConnect: [错误信息:无法建立连接] ** oci8 (oci8)://gbsihr:xxx@localhost:1521/

尝试连接到数据库服务器时出错。错误消息:MDB2 错误:连接失败

我真的不知道这意味着什么。这是我的 PHP 连接函数:

这是 configure.inc 的内容:

由于这适用于另一种设置,我不确定错误在哪里。OCI8 似乎是有序的,尽管我确实经过了一些努力才能让它工作。

我做了一些研究,只有两个模糊的结果——一个指向 oci8.php 本身,另一个是 Oracle TNS 错误(不太可能,因为没有错误)。

这是我解决问题的尝试:

我尝试从这个网站复制基本查询示例。我修改了“hr”和“welcome”,并在我的新设置上运行它(它在旧设置上运行良好)。这是结果:

oci_connect(): OCIEnvNlsCreate() 失败。您的系统有问题 - 请检查 ORACLE_HOME 和 LD_LIBRARY_PATH 是否已设置并指向正确的目录。尝试检索错误 ORA01804 的文本时出错

我还尝试在 /etc/sysconfig/ 中打开 httpd 文件并在其中添加以下行:

LD_LIBRARY_PATH="/u01/apps/oracle/product/11.2.0/xe/lib
导出LD_LIBRARY_PATH

然而,当我尝试在 CLI 中回显 $LD_LIBRARY_PATH 时,它不会返回任何内容。它确实出现在 phpinfo() 中,但: 在此处输入图像描述
这与 $ORACLE_HOME 形成对比,我必须通过在 CLI 中键入每次启动手动加载它. /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh,并且不会出现在环境下,但至少可以回显' d。 在此处输入图像描述

环境下的旧设置中有很多变量;LD_LIBRARY_PATH、ORACLE_HOME 和 ORACLE_SID 是最值得注意的。不过,我只在 envvars 文件中看到 LD_LIBRARY_PATH 。我是否也应该将它们添加到 httpd 文件中?

对不起,我不是一个 Linux 人。对此的任何帮助将不胜感激。

0 投票
0 回答
761 浏览

php - 为 PHP、MDB2 和 OCI8 正确设置 Oracle 环境变量

我设置了一个 Fedora 19 服务器,带有 Oracle 11g、PHP 5.5.4、Apache 2.4.6 和 PEAR 1.9.4。除此之外,我还下载并启用了 PHP 的 OCI8 插件,并下载了 MDB2 和 MDB2_Driver_oci8。

但是,设置存在问题 - 来自旧服务器的旧网站无法在其上运行,因此罪魁祸首似乎是为 Apache 和 oci8 设置了不正确的 Oracle 环境。

然而,Oracle 11g 数据库本身工作正常——我已经能够以 SYSTEM 身份登录,创建一个新用户,并将数据库恢复到该用户。

下面是新的 Fedora 19 服务器的环境截图,使用 phpinfo():

新服务器

下面是旧版 Fedora 服务器的环境截图:

在此处输入图像描述

有很多,但可能唯一重要的事情是关于 Oracle 的。

我按照这里的链接教程介绍了如何在 Fedora 上安装 Oracle 11g,我能够启动并运行它,尽管. /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh每次启动时我都必须运行。

但是在旧服务器中,它显示在环境中(在 phpinfo() 中),而在新服务器中,它却没有。

值得注意的是 LD_LIBRARY_PATH 在两者中都设置了,但我必须通过在其中添加以下内容手动将其添加到 httpd 文件(/etc/sysconfig/)中:

LD_LIBRARY_PATH="/u01/apps/oracle/product/11.2.0/xe/lib 导出
LD_LIBRARY_PATH

但是,如果我在较新的服务器中回显 LD_LIBRARY_PATH,它不会返回任何内容。在旧服务器中,它返回环境页面中显示的内容。

这里发生了什么?我该如何解决?我还错过了其他与 Oracle 相关的事情吗?

感谢所有愿意提供帮助的人。

0 投票
1 回答
491 浏览

ruby - Ruby OCI8 desc table_name

谢谢你的时间!

我使用OCI8连接Oracle并执行一些sql语句。

但是当我执行以下操作时:

它引发了错误:

我问了一些 DBA,他们告诉我这desc是 Data Definition Language (DDL) ,它不是普通的 SQL,可能这就是导致问题的原因。

我使用 Ruby 作为我的脚本语言。我该如何解决这个问题?

0 投票
1 回答
7248 浏览

oracle - 如何用xampp连接oracle数据库?

我下载了 XAMPP Windows 1.8.2 和 oracle 即时客户端 12.1。

然后,我解压 oracle 即时客户端文件,编辑 PATH 环境设置,并PATH通过添加即时客户端的路径在系统变量列表中进行编辑。

我发现string ;extension=php_oci8.dll. Remove the semicolon (;) from the begining of the string to activate the oracle extension and save it.

然后我重新启动 xampp 但在 phpinfo 中找不到 oci8。

请帮我解决问题。

0 投票
1 回答
300 浏览

php - 在 PHP 中的 SQL 代码中将 MySQL 语法更改为 Oracle 语法时出错

所以我让这个项目获取一个以前使用 MySQL 现在使用 Oracle 的页面。所以我安装了 oci8 PHP 模块并创建了一个测试页面来进行更改。这是我正在更新的页面,我不是 Oracle 人员。我是 MySQL/PostgreSQL 的人。

无论如何,有这些原始参数:

所以我将这些行替换如下:

执行此操作后,跟踪 -f apache 错误日志并得到:

最后两个错误与前两个有关。基于这些错误,看来oci_parseoci_fetch_array不正确的。这些是第 15 行和第 17 行 BTW。

再一次,我不知道甲骨文...

0 投票
1 回答
1163 浏览

ruby - OCI8 - “连接失败,因为目标主机或对象不存在”仅在第一次尝试时

这是一个 ruby​​ 项目,使用 ActiveRecord 的 oracle-enhanced-adapter gem 连接到 Oracle。这个 gem 是 OCI8 的包装器。

好的,让我们测试一下。

给它 5 秒钟,然后再试一次。

这种解决方法可以完成工作,但感觉有点脏。

看起来像一个经典的超时,但是......如果它是一个超时,我可以在哪里以及如何配置它?注意:已经在建立连接中尝试过 :timeout => 5000。没用。

0 投票
1 回答
15854 浏览

php - 如何将 OCI8 安装到现有的 PHP?

根据这个(从 PECL 安装 OCI8,自动化),我所要做的就是输入pecl oci8 install.

但这只会让我反复出现以下错误。

No releases available for package pecl.php.net/oci8.

另一个网站建议我试试pear install pecl/oci8。发生同样的错误。

我该怎么做才能解决这个问题?