首页 文章

Centos 6 PHP OCI8扩展不起作用(未定义函数oci_connect())

提问于
浏览
-1

我正在使用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

I have installed oci8 like this:

OCI8使用pear $ pear下载pecl / oci8下载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 =>没有值=>没有 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 =>关=>关
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的问题吗?

非常需要你的帮助 .

谢谢

3 回答

  • 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;
    >             }
    

    希望它能帮助每个人

    谢谢,

  • 0

    step-01 有关正确安装的信息,请参阅此链接

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

    安装成功后

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

    <?php echo phpinfo(); ?>
    

    enter image description here

    如果没有列出 .

    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安装

  • 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
    

    完成!

相关问题