使用未定义的常量OCI_COMMIT_ON_SUCCESS - 假设' OCI_COMMIT_ON_SUCCESS'同时创建Oracle数据库连接

时间:2015-11-26 04:31:43

标签: php database oracle codeigniter

目前我正在使用 codeigniter 与oracle db合作。当我尝试建立连接时,我是这个数据库的新手。我收到了这个错误。

遇到PHP错误

Severity: Notice
Message: Use of undefined constant OCI_COMMIT_ON_SUCCESS - assumed 'OCI_COMMIT_ON_SUCCESS'
Filename: database/DB.php
Line Number: 144 

我已经在 php.ini

中启用了扩展功能
;extension=php_mysqli.dll
extension=php_oci8.dll      ; Use with Oracle 10gR2 Instant Client
;extension=php_oci8_11g.dll  ; Use with Oracle 11gR2 Instant Client

以下是 database.php 的代码:

$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'xxx.xxx.x.xx';
$db['default']['username'] = 'xxxx';
$db['default']['password'] = 'xxxx';
$db['default']['database'] = '';
$db['default']['dbdriver'] = 'oci8';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

以下是控制器的代码:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Welcome extends CI_Controller {


    function __construct()  {
            parent::__construct(); 
    }

    function index()        {
            $this->db = $this->load->database('default',TRUE);

            if (!empty($this->db))
                echo "Connected!"."\n";
            else
                echo "Closed"."\n";
    }
}

我差不多2周就遇到了这个问题。我也已经搜索了解决方案,但没有任何工作。你能救我吗?

1 个答案:

答案 0 :(得分:1)

我知道这是一个很冷的案例,但是现在有些人可能仍会使用Oracle 10g和11g。

要检查的几点:

  • 您是在说“ php.ini”,但是您是否在网络服务器中取消了注释?还是只在cli中? (有两个php.ini,具体取决于 SAPI )。

  • 从网页中运行时,您能在oci8的输出中看到phpinfo()吗?

  • 您是否曾尝试激活Web服务器的php.ini中的php_oci8_11g.dll模块,而不是php_oci8.dll吗?

  • 您是否尝试过简单的单元测试,例如:<?php echo OCI_COMMIT_ON_SUCCESS; ?>

  • 在激活cli php.ini中的oci8模块后,从命令行在单行代码上方尝试一下(显然,如果cli,则无需重新启动任何内容) 而不是掏出“大武器” =完整的网络应用程序。

  • 如果您曾经在Ubuntu上进行过设置,请确保在/ etc / apache2 / envvars中定义了LD_LIBRARY_PATH,以指向InstantClient库(从oracle.com下载),例如/ opt / oracle / instantclient_12_2

  • 在对服务器进行php.ini每次修改后,显然会重新启动Web服务器。