无法加载oci8 - >致命错误:调用未定义的函数oci_connect()

时间:2015-12-10 07:21:25

标签: php oracle oci oci8

我想连接到我的oracle数据库,但是我的函数oci_connect有问题。我试图取消注释:

extension=php_oci8.dll 

但仍有错误:

  

致命错误:在第71行的C:\ xampp \ htdocs \ testing \ db.php中调用未定义的函数oci_connect()

但是,当我签入phpinfo()时,oci8仍然没有加载,我无法连接到我的oracle数据库。我已经重启了我的apache。我如何解决这个问题?残友帮帮我?

谢谢..

4 个答案:

答案 0 :(得分:1)

php.ini中,确保启用正确的OCI扩展(11g),如下所示:

;extension=php_oci8.dll      ; Use with Oracle 10gR2 Instant Client
extension=php_oci8_11g.dll  ; Use with Oracle 11gR2 Instant Client

只要您已正确安装Oracle 11gR2 or greater client libraries,您现在应该可以运行:

C:\>php --ri oci8

得到结果:

oci8

OCI8 Support => enabled
Version => 1.4.10
Revision => $Id: b0984d94e17f7c099470cd0a9404259f2a59da04 $
Active Persistent Connections => 0
Active Connections => 0
Oracle Run-time Client Library Version => 11.2.0.3.0
Oracle Instant Client Version => 11.2
Temporary Lob support => enabled
Collections support => enabled

Directive => Local Value => Master Value
oci8.max_persistent => -1 => -1
oci8.persistent_timeout => -1 => -1
oci8.ping_interval => 60 => 60
oci8.privileged_connect => Off => Off
oci8.statement_cache_size => 20 => 20
oci8.default_prefetch => 100 => 100
oci8.old_oci_close_semantics => Off => Off
oci8.connection_class => no value => no value
oci8.events => Off => Off

要检查您的Oracle客户端是否已正确安装(即在您的环境PATH变量中),您可以运行:

C:\>where oci*

你应该得到这样的结果:

C:\instantclient_11_2\oci.dll
C:\instantclient_11_2\oci.sym
C:\instantclient_11_2\ocijdbc11.dll
C:\instantclient_11_2\ocijdbc11.sym
C:\instantclient_11_2\ociw32.dll
C:\instantclient_11_2\ociw32.sym

答案 1 :(得分:1)

在Ubuntu 16.04中,使用PHP 5.6和64位操作系统,试试这个:

安装软件包:

sudo apt-get install php5.6-dev build-essential php-pear libaio1

从以下网址下载最新版本的软件包:

http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

根据最新版本搜索这些包:

oracle-instantclientXX.X-basic-XX.X.X.X.X-X.x86_64.rpm
oracle-instantclientXX.X-devel-XX.X.X.X.X-X.x86_64.rpm

转换套餐:

sudo apt-get install alien
sudo alien oracle-instantclientXX.X-basic-XX.X.X.X.X-X.x86_64.rpm
sudo alien oracle-instantclientXX.X-devel-XX.X.X.X.X-X.x86_64.rpm

安装:

sudo dpkg -i oracle-instantclientXX.X-basic_XX.X.X.X.X-X_amd64.deb
sudo dpkg -i oracle-instantclientXX.X-devel_XX.X.X.X.X-X_amd64.deb

安装oci8:

sudo pecl install oci8-2.0.12

*Build process completed successfully
Installing '/usr/lib/php/20131226/oci8.so'
install ok: channel://pecl.php.net/oci8-2.0.12
configuration option "php_ini" is not set to php.ini location
You should add "extension=oci8.so" to php.ini*

将扩展名添加到php:

sudo gedit /etc/php/5.6/apache2/php.ini

添加扩展程序:

extension=oci8.so

重启apache:

sudo service apache2 restart

就是这样。

答案 2 :(得分:0)

关注我的官方链接

http://www.oracle.com/technetwork/articles/dsl/technote-php-instant-084410.html

以下是适用于Xammp的内容

1.uncomment extension = php_oci8_11g.dll;如果您使用11g(在php.ini中)

,请与Oracle 11gR2 Instant Client一起使用

2.添加AddHandler fcgid-script .php到httpd.conf

3.从httpd.apache.org/download.cgi#mod_fcgid下载FastCGI组件mod_fcgid-2.3.6-win32-x86.zip

4.将其解压缩到已安装的Apache 2.2目录。 C:\ xamp \ apache \ modules目录现在应该有mod_fcgid.so和mod_fcgid.pdb文件。

5.从OTN Instant Client页面下载适用于Windows的“Instant Client Package - Basic”。因为PHP是32位,所以使用32位版本的Instant Client。

将Instant Client文件解压缩到C:\ instantclient_11_2

编辑Windows PATH环境设置并添加C:\ instantclient_11_2。例如,在Windows XP上,按照开始 - >控制面板 - >系统 - >高级 - >环境变量和编辑系统变量列表中的PATH。

通常,您需要重新启动Windows,以便正确设置新环境。

对我来说一切顺利

答案 3 :(得分:0)

查看RO_engineer安装Oracle insta客户端的x86文件而不是x64版本的答案。它解决了我的问题,也可能对你有帮助。

https://stackoverflow.com/a/27177616/289587

Download Instant Client for Microsoft Windows (32-bit)