致命错误:调用未定义函数 oci_connect()
Posted
技术标签:
【中文标题】致命错误:调用未定义函数 oci_connect()【英文标题】:Fatal error: Call to undefined function oci_connect() 【发布时间】:2011-12-26 12:43:06 【问题描述】:我没有注释下一行(在我的 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()
我在 erroeLog 文件中发现了这个警告:
[29-Dec-2011 00:36:39] PHP 警告:PHP 启动:无法加载动态库 'c:\php\ext\php_oci8.dll' - 找不到指定的模块。 在第 0 行的未知中
[29-Dec-2011 00:36:39] PHP 警告:PHP 启动:无法加载动态库 'c:\php\ext\php_oracle.dll' - 找不到指定的模块。
【问题讨论】:
CLI 版本或 Apache 输出什么消息?日志文件或系统日志的内容是什么? 这应该有助于解决上述错误! Link 【参考方案1】:检查事项:
您不需要设置LD_LIBRARY_PATH
或ORACLE_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 下工作。 我遇到了同样的问题,发现在 ini 文件中注释了 php_oci8.dll 并在旁边看到另一条这样的注释:“与 Oracle 10gR2 Instant Client 一起使用”。它提到了你要检查的第一点东西?使用 Instantclient 或取消注释 ini 文件中的 php_oci8.dll 有什么区别? @Andrea_86 - 使用 PHP 和使用 Apache 之间存在相同的区别:不同的东西,两者都需要。【参考方案2】:将php_oci8.dll
文件放入php/ext
目录后是否重新启动了apache?
【讨论】:
【参考方案3】:只需将这一行添加到指向扩展位置的php.in文件中,应该知道它们的位置,但通常在php文件夹中。
extension_dir = C:\xampp\php\ext ;
this 是给我使用 xampp 的,要明智。
它对我有用。问题在于访问扩展,与 oracle 库无关。
【讨论】:
以上是关于致命错误:调用未定义函数 oci_connect()的主要内容,如果未能解决你的问题,请参考以下文章
致命错误:调用未定义函数 mb_detect_encoding()
致命错误:未捕获错误:调用未定义函数 is_product()