致命错误:调用未定义的函数oci_connect()。

7

我已经取消注释了以下内容(在我的php.ini文件中):

extension=php_oracle.dll 
extension=php_oci8.dll

我下载了这个文件 instantclient-basiclite-nt-11.2.0.2.0.zip,并解压缩并将其放在D盘上...

我正在使用Windows XP操作系统

我设置环境变量如下:

LD_LIBRARY_PATH     C:\instantclient_11_2:$LD_LIBRARY_PATH 
ORACLE_HOME     C:\instantclient_11_2 

当我执行oci_connect()函数时,我看到这个错误:

致命错误:在……中调用未定义的函数oci_connect()

并且我在errorLog文件中发现了这些警告:

[2011年12月29日00:36:39] PHP警告:PHP启动:无法加载动态库'c:\ php \ ext \ php_oci8.dll' - 指定的模块找不到。 在未知线路上

[2011年12月29日00:36:39] PHP警告:PHP启动:无法加载动态库'c:\ php \ ext \ php_oracle.dll' - 指定的模块找不到。


CLI版本或Apache输出会有哪些信息?日志文件或系统日志会显示什么? - mario
这应该有助于解决上述错误![链接](https://dev59.com/d2Eh5IYBdhLWcg3wYSk2#39770392) - Mahesh G
3个回答

4

需要检查以下事项:

  • 不需要设置 LD_LIBRARY_PATHORACLE_HOME。但是,您需要将 D:\instantclient_11_2 添加到 PATH 环境变量中,并重新启动计算机以使更改生效。

  • 在配置 PHP 之前,请检查您的 Oracle 客户端库是否实际工作(例如,尝试使用 SQL Developer 连接)。

  • 注释掉 extension=php_oracle.dll。它属于旧版和过时的 Oracle 扩展。

  • 仔细检查 php_oci8.dll 文件是否真的在 c:\php\ext\php_oci8.dll


@afsane - 那很明显:如果它不能独立工作,那么它就无法在PHP下工作。 - Álvaro González
我有同样的问题,并在ini文件中找到了注释掉的php_oci8.dll,并看到旁边还有另一个注释,如下所示:“与Oracle 10gR2 Instant Client一起使用”。这是指您检查的第一点吗?使用instantclient和取消ini文件中的php_oci8.dll注释有什么区别? - Andrea_86
@Andrea_86 - 使用PHP和使用Apache之间存在的相同差异:不同的东西,两者都是必需的。 - Álvaro González

2
你把php_oci8.dll文件放在php/ext目录后,是否重启了Apache?

0
只需将此行添加到指向扩展位置的php.in文件中,应该知道它们的位置,但通常在php文件夹中。 extension_dir = C:\xampp\php\ext ;这是我使用xampp的情况,请明智选择。
对我有用。问题在于访问扩展,与Oracle库无关。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接