安装OCI8:如何纠正“使用未定义的常量OCI_COMMIT_ON_SUCCESS”错误?

时间:2017-09-27 08:21:15

标签: php oracle redhat oci8

我正在尝试在我的Apache服务器的RedHat服务器(RHEL7)上安装OCI8。 此时,当我尝试使用Symphony连接到我的服务器时,出现此错误:

  

异常“ErrorException”:使用未定义的常量OCI_COMMIT_ON_SUCCESS - 假设为'OCI_COMMIT_ON_SUCCESS'

以下是我安装OCI8所做的工作。

  1. 安装oracle-instantclient11.2 RPMs(开发和基本)。
  2. 安装OCI8包:
  3. 有关信息,我的服务器上已有Oracle 12C,但我想将我的PHP应用程序连接到另一台服务器(Oracle 11GR2)。

    tar zxvf oci8-2.1.7.tgz
    cd oci8-2.1.7
    phpize
    ./configure --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client64/lib --with-php-config=/opt/rh/rh-php56/root/usr/bin/php-config 
    make
    make install
    
    1. 编辑php.ini以添加extension=oci8.so
    2. 我发现了thread,我尝试使用oci_connect并收到此错误:

        

      致命错误:调用未定义的函数oci_connect()

      如何更正此问题?

      编辑:我刚在 php_error.log 中发现此错误:

        

      [26-Sep-2017 16:14:12 Europe / Paris] PHP警告:PHP启动:无法加载动态库'/ opt / rh / rh-php56 / root / usr / lib64 / php / modules / oci8 .so' - /opt/rh/rh-php56/root/usr/lib64/php/modules/oci8.so:未定义的符号:_emalloc_128在第0行的未知中

1 个答案:

答案 0 :(得分:1)

根据此thread,PHP警告是由库冲突引起的。所以,我完全卸载OCI8并再次安装。但是,这一次,我没有选择最后一个版本,因为我在PECL网站上看到了:

  

使用'pecl install oci8-2.0.12'进行安装   对于PHP 5.2 - PHP 5.6。

另外,因为我的服务器上已有Oracle数据库,所以我使用这些命令来安装扩展程序:

make_pizza('ham', 'extra meat', 'sweet con', 'pepperoni', size=17)

现在,我可以在我的phpinfo页面中找到OCI8扩展名。