Centos 6 PHP OCI8扩展无法正常工作(未定义的函数oci_connect())

时间:2014-05-19 06:41:26

标签: php oracle centos6 oci8

我正在使用Centos 6 64位操作系统。最近我用php安装了OCI8扩展。完成所有配置后,我尝试执行函数oci_connect以远程连接Oracle数据库。

不幸的是我收到了这个错误:

Fatal error: Call to undefined function oci_connect() in /var/www/html/index.php on line 5  

我安装了oci8,如下所示:

  

OCI8

     

使用pear

下载OCI8源代码
$ pear download pecl/oci8
$ tar -xvf oci8-1.4.9.tgz
$ cd oci8-1.4.9
     

构建并安装扩展程序。

$ phpize 
$ ./configure --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client64/lib 
$ make 
$ sudo make install
     

要启用扩展,请在/etc/php.d中添加名为oci8.ini的文件   这个内容:

extension=oci8.so
     

确认已成功安装。

     

$ php -i | grep oci8

     

你应该看到这样的事情:

/etc/php.d/oci8.ini,

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

参考:http://shiki.me/blog/installing-pdo_oci-and-oci8-php-extensions-on-centos-6-4-64bit/

我想提一下,当安装开始时,消息显示如下:instantclient,/../../以PUT THE PATH。我没有给任何东西,只是按下回车。这是我无法连接到Oracle的问题吗?

非常需要你的帮助。

由于

3 个答案:

答案 0 :(得分:0)

我设法解决了问题。实际上问题是没有加载环境库。所以我通过PHP手动加载了oracle的环境。

这是我的代码:

>     if (!$conn):
>                     /// INCLUDING ORACLE_HOME MANUALLY
>                             putenv("ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1/");
>                            // INCLUDING LD_LIBRARY_PATH MANUALLY
>                             putenv("LD_LIBRARY_PATH=/u01/app/oracle/product/11.2.0/dbhome_1/lib:/lib:/usr/lib:/lib:/usr/lib:/usr/local/lib");
> 
>                             $conn = "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT = 1521))) 
> (CONNECT_DATA = (SERVICE_NAME = data)))";
>                             $conn = oci_pconnect("username", "password", $conn);
>                             endif;
>                             if($conn):
>                                 return $conn;
>                             endif;  
>                             if(!$conn):
>                                 redirect('login');
>                             endif;
>             }

希望它会帮助每个人

谢谢,

答案 1 :(得分:0)

step-01 要正确安装oci8,请参阅此链接

http://www.techinfobest.com/install-oci8/

成功安装后

步骤02 检查php配置,其中列出的OCI8的单独部分不是

<?php echo phpinfo(); ?>

enter image description here

如果没有列出。

步骤03 按终端检查您的httpd错误日志

cat /var/log/httpd/error_log

在httpd服务启动后发现任何php错误,如

  

PHP警告:PHP启动:无法加载动态库'/usr/lib64/php/modules/oci8.so' - libclntsh.so.12.1:无法启用可执行堆栈,因为共享对象需要:在线未知权限被拒绝0

那么这是你的selinux许可中的问题。找到以下链接以获得适当的许可。

第03步 http://www.cdatazone.org/index.php?/archives/37-PHP,-Oracle-and-SELinux.html

我已按照这些步骤成功完成oracle安装

答案 2 :(得分:0)

对于Centos 7,我不知道它是否可以在Centos 6中使用。

$ sudo vim /etc/ld.so.conf.d/oracle-instantclient.conf

// Add path to oracle client lib, the XX is the version, ex: /usr/lib/oracle/XX/client64/lib 

$ sudo ldconfig
$ sudo service php-fpm restart

完成!