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


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

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

extension=php_oci8.dll 

但是,仍然有一个错误:

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

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

谢谢。。

在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

就是这样。

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

只要您正确安装了Oracle11gR2或更高版本的客户端库,您现在就应该能够运行:

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

点击我的Oracle 官方链接

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

以下是Xammp 的工作原理

1.取消注释扩展名=php_oci8_11g.dll;如果您正在使用11g(在php.ini中),请与Oracle 11gR2即时客户端一起使用

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

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

4.将其解压缩到已安装的Apache 2.2目录中。C:''example''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的即时客户端(32位)