繁体   English   中英

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

[英]can not load oci8 -> Fatal error: Call to undefined function oci_connect()

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

extension=php_oci8.dll 

但是,仍然有一个错误:

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

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

谢谢..

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或更高版本的客户端库 ,您现在就可以运行:

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

在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

而已。

请关注Oracle的官方链接

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.Download从FastCGI的部件mod_fcgid-2.3.6-win32-x86.zip httpd.apache.org/download.cgi#mod_fcgid

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,以便正确设置新环境。

这对我来说一切顺利

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

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

下载适用于Microsoft Windows的Instant Client(32位)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM