调用未定义的函数oci_connect()

use*_*806 9 php oracle

我收到了这个错误.

Fatal error: Call to undefined function oci_connect()
$conn = oci_connect('localhost', 'username', 'password') or die(could not connect:'.oci_error)
Run Code Online (Sandbox Code Playgroud)

那就是代码.

这是我得到的错误.

Fatal error: Call to undefined function oci_connect() in C:\xampp\htdocs\org\org\php\myphp.php on line 51
Run Code Online (Sandbox Code Playgroud)

我检查了ext文件夹中的PHP DLL文件.

事先感谢有人帮助解决这个问题.

小智 17

我只花了三个星期来对抗这个问题.

我在Windows 7中使用了我的ORACLE连接,没问题.上周我刚买了一台装有Windows 8的新电脑.安装XAMPP 1.8.2.这台服务器上的每个应用程序PHP/MySQL都运行良好.当我尝试将我的php应用程序连接到Oracle DB时出现问题.

调用未定义的函数oci_pconnect()

当我通过更改启动/停止Apache时,"PHP启动"上的一个奇怪的"警告"将转到LOG"PHP警告:PHP启动:在第0行未知"

我做了所有事情(未注释的php_oci8.dll和php_oci8_11g.dll,将oci.dll复制到/ ext目录,靠近/ Apache并且没有它工作.下载每个版本的Instant Client和NOTHING.

上帝来到我的帮助下.当我下载ORACLE Instant Client 32位时,一切正常.phpinfo()显示oci8信息,我的应用程序工作正常.

所以,永远不要认为你的WINDOWS版本是x64.该链接位于XAMPP和ORACLE Instant Client之间.

  • 我认为关键是XAMPP工作在32位,因此只能与Oracle 32位驱动程序一起使用.Oracle客户端32位足够智能,能够与64位服务器版本通信.但XAMPP-32不够智能,无法使用Oracle 64位客户端驱动程序. (5认同)

Eli*_*eya 6

简单的步骤

您需要在php.ini中启用以下扩展名

;extension=php_oci8.dll
;extension=php_oci8_11.g.dll
Run Code Online (Sandbox Code Playgroud)

删除";" 以便结果如下:

extension=php_oci8.dll
extension=php_oci8_11.g.dll
Run Code Online (Sandbox Code Playgroud)

下载Oracle Instant Client: - 最好是32位.32位也可以在64位上运行.你可以只谷歌:下载oracle即时客户端窗口32位.使用客户端版本11,因为extension=php_oci8_11.g.dll无法使用12.将包解压缩到诸如此类的位置C:\Oracle\instantclient_11_2.

最后PATH,在系统变量而非用户变量下,使用结束位置修改系统的环境变量

然后,您需要重新启动系统以PATH进行完全传播的更改.

如果您只是重新启动XAMPP/WAMP而不重新启动计算机,则PHP的php_oci8_11g.dll扩展名将不会加载(也未找到)客户端的DLL文件(即OCL.dll).


Joh*_*nde 5

您需要在 php.ini 文件中启用该扩展。请参阅Oracle 安装

extension=oci8.so
Run Code Online (Sandbox Code Playgroud)


Ron*_*Ron 5

确保事项

  1. 每当您连接Oracle数据库时,请尝试使用32位oracle客户端库,因为XAMP PHP是使用32位编译的(尽管您有64位Windows机器)
  2. 从此处下载Oracle客户端

  3. 将其粘贴到C:\ instantclient_12_1

  4. 然后在系统环境变量中将路径设置为上方
  5. 然后转到C:\ xampp \ php \ php.ini并取消注释扩展名= php_oci8_12c.dll
  6. 然后重新启动XAMP,它应该没有任何问题。