【问题标题】:PHP & Oracle - oci_connect() ORA-12705: Cannot access NLS data files [duplicate]PHP & Oracle - oci_connect() ORA-12705:无法访问 NLS 数据文件 [重复]
【发布时间】:2011-07-01 14:24:54
【问题描述】:

我们多年来一直在我们的服务器上使用 Oracle,但 IT 部门的某个人昨天在没有明确警告的情况下将其删除,它真的把我们的系统扔了!

我已经按照 cwallenpoole 的建议采取了行动(谢谢!)并取得了良好的进展,PHP 现在至少包含了 oracle 函数(即 oci_connect),但我现在遇到了另一个错误消息:

警告:oci_connect() [function.oci-connect]: ORA-12705: 无法访问 NLS 数据文件或无效环境

我们已确保 tnsnames.ora 等文件在正确的位置,但仍然没有乐趣:(

谢谢

【问题讨论】:

  • 您是否重新启动了网络服务器?您是否 100% 确定您正在编辑正确的 php.ini,如调用 phpinfo() 时提到的那样?
  • phpinfo() 是否提到过 OCI?
  • 嗯,那么扩展程序没有被加载。 应该意味着它没有读取extension=php_oci8_dll 行,否则它会在重新启动时崩溃。但是你说你检查了路径,它是正确的 php.ini...奇怪!
  • 根据我的经验,它要么成功读取扩展文件,要么崩溃。那里没有灰色地带。您可以尝试做的是故意将文件名更改为不正确的名称。如果没有任何抱怨就可以通过,无论出于何种原因,它都不会读取 INI 文件

标签: php oracle oracle-call-interface


【解决方案1】:

好的。这是我个人的噩梦。我真的在半夜醒来......或者我没有,但我已经花了好几天的时间来解决这个问题。

所以,这对我有用:

  1. 你有Oracle Instant Client吗?如果没有得到它。
  2. 您有 Oracle SDK 吗?如果没有得到它。
  3. 解压 Instantclient。
  4. 将 SDK 解压到子目录中
  5. 将 ORACLE_HOME 添加为导出的命令行变量(在 *nix 中为 $ORACLE_HOME,在 win 中为 %ORACLE_HOME%)。让它指向上述 Instantclient 文件夹的完全限定路径。
  6. 创建 ORACLE_BIN 并将其指向 SDK。
  7. 将 ORACLE_HOME 添加到您的 PATH。
  8. 重新启动 Apache...

所以...这就是我通常所做的...而且通常它有效...大多数情况下...

我认为实际上我只能说祝你好运和神速。

【讨论】:

  • 非常感谢!它现在正在加载 PHP 文件,但显示:警告:oci_connect() [function.oci-connect]:ORA-12705:无法访问 NLS 数据文件或无效环境
  • :::sigh::: 嗯,那时,我刚刚在 Oracle Instant Client SDK 站点下载了所有内容,并将它们全部放入一个子目录中。如果这不起作用,请告诉我,明天我会调查 TNSADMIN 的东西。
  • 谢谢,Instant Client SDK 下载的是哪个? oracle.com/technetwork/database/features/instant-client/…最后我从这里使用了JRE,但它可能是错误的:oracle.com/technetwork/java/javase/downloads/index.html再次感谢!
  • Instantclient 在这里:oracle.com/technetwork/database/features/instant-client/… 不过你需要自己弄清楚哪一个——它是特定于硬件架构的。
  • 谢谢!大量的胡闹,最后终于让它工作了——大量使用注册表、环境变量路径、tns_admin、oracle_home 和各种其他东西,哇哦!再次感谢:)
猜你喜欢
  • 1970-01-01
  • 2018-09-20
  • 2011-10-13
  • 2023-03-28
  • 1970-01-01
  • 2013-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多