【问题标题】:Centos 6 PHP OCI8 extention is not working (Undefined function oci_connect())Centos 6 PHP OCI8 扩展不起作用(未定义函数 oci_connect())
【发布时间】:2014-07-07 00:38:53
【问题描述】:

我使用的是 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, /../../ to PUT THE PATH。我什么也没给,直接按回车。是我无法连接到 Oracle 的问题吗?

非常需要你的帮助。

谢谢

【问题讨论】:

  • 我已经做到了,现在问题已经解决了。
  • 如果您已经解决了您的问题,请发布解决方案,以便其他人也可以解决它....

标签: php oracle centos6 oci8


【解决方案1】:

对于 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

完成!

【讨论】:

    【解决方案2】:

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

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

    安装成功后

    step-02 检查 php 配置,其中列出的 OCI8 的单独部分未列出

    <?php echo phpinfo(); ?>
    

    如果未列出。

    step-03通过终端检查你的httpd错误日志

    cat /var/log/httpd/error_log
    

    发现httpd服务启动后发生的任何php错误

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

    那是你的 selinux 权限的问题。在下面找到正确许可的链接。

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

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

    【讨论】:

      【解决方案3】:

      我已经设法解决了问题。实际上问题是没有加载环境库。所以我已经通过 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;
      >             }
      

      希望对大家有所帮助

      谢谢,

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-15
        • 1970-01-01
        • 2014-04-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多