【问题标题】:PHP is not loading pdo_oci driverPHP 未加载 pdo_oci 驱动程序
【发布时间】:2014-03-19 05:13:33
【问题描述】:

我已将我的 ubuntu 13.04 升级到 13.10,不幸的是它改变了我在 php 和 apache 中配置的所有内容。现在我有了新版本的 apache 和 php。以前我成功安装了 pdo_oci 并一直在我的 php 项目中使用 Oracle,但现在升级后我不得不重新安装 pdo_oci,我成功地完成了并在 php.ini 中添加了 extension=pdo_oci.so 但 php 似乎没有加载它。请帮忙。如何确保 pdo_oci 已准备好使用以及如何使 php 加载它。

【问题讨论】:

    标签: php oracle pdo driver oracle-call-interface


    【解决方案1】:

    好吧,伙计们,似乎没有人愿意回答。这是我的答案:

    大多数问题是由于您下载的 PDO_OCI 目录中的 config.m4 文件不兼容而发生的。因此,我进行了所有必要的更改并最终成功安装。现在它正在工作。上次也没人帮我,好伤心!

    这里是 config.m4 文件的内容,我不能像我那样一步一步地指导更改每一行,因为有很多更改我几乎都不记得了。如果遇到类似问题,可以直接复制粘贴。

    dnl $Id: config.m4,v 1.14.2.1 2005/09/24 23:23:24 sniper Exp $
    
    if test "$PHP_PDO" != "no"; then
    
    AC_DEFUN([AC_PDO_OCI_VERSION],[
      AC_MSG_CHECKING([Oracle version])
      if test -s "$PDO_OCI_DIR/orainst/unix.rgs"; then
        PDO_OCI_VERSION=`grep '"ocommon"' $PDO_OCI_DIR/orainst/unix.rgs | sed 's/[ ][ ]*/:/g' | cut -d: -f 6 | cut -c 2-4`
        test -z "$PDO_OCI_VERSION" && PDO_OCI_VERSION=7.3
      elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.11.2; then
        PDO_OCI_VERSION=11.2    
      elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.10.1; then
        PDO_OCI_VERSION=10.1
      elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.9.0; then
        PDO_OCI_VERSION=9.0
      elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.8.0; then
        PDO_OCI_VERSION=8.1
      elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.1.0; then
        PDO_OCI_VERSION=8.0
      elif test -f $PDO_OCI_DIR/lib/libclntsh.a; then 
        if test -f $PDO_OCI_DIR/lib/libcore4.a; then 
          PDO_OCI_VERSION=8.0
        else
          PDO_OCI_VERSION=8.1
        fi
      else
        AC_MSG_ERROR(Oracle-OCI needed libraries not found under $PDO_OCI_DIR)
      fi
      AC_MSG_RESULT($PDO_OCI_VERSION)
    ])                                                                                                                                                                
    
    PHP_ARG_WITH(pdo-oci, Oracle OCI support for PDO,
    [  --with-pdo-oci[=DIR]      PDO: Oracle-OCI support. Default DIR is ORACLE_HOME.
                                You may also use --with-pdo-oci=instantclient,prefix,version to use
                                the InstantClient SDK. For Linux with 10.1.0.3 rpms (for example) use:
                                --with-pdo-oci=instantclient,/usr,10.1.0.3])
    
    if test "$PHP_PDO_OCI" != "no"; then
      AC_MSG_CHECKING([Oracle Install-Dir])
      if test "$PHP_PDO_OCI" = "yes" -o -z "$PHP_PDO_OCI"; then
        PDO_OCI_DIR=$ORACLE_HOME
      else
        PDO_OCI_DIR=$PHP_PDO_OCI
      fi
      AC_MSG_RESULT($PDO_OCI_DIR :$PHP_PDO_OCI:)
    
      AC_MSG_CHECKING([if that is sane])
      if test -z "$PDO_OCI_DIR"; then
        AC_MSG_ERROR([
    You need to tell me where to find your oracle SDK, or set ORACLE_HOME.
    ])
      else
        AC_MSG_RESULT([yes])
      fi
    
      if test "instantclient" = "`echo $PDO_OCI_DIR | cut -d, -f1`" ; then
        PDO_OCI_IC_PREFIX="`echo $PDO_OCI_DIR | cut -d, -f2`"
        PDO_OCI_IC_VERS="`echo $PDO_OCI_DIR | cut -d, -f3`"
        AC_MSG_CHECKING([for oci.h])
        if test -f $PDO_OCI_IC_PREFIX/include/oracle/$PDO_OCI_IC_VERS/client/oci.h ; then
          PHP_ADD_INCLUDE($PDO_OCI_IC_PREFIX/include/oracle/$PDO_OCI_IC_VERS/client)
          AC_MSG_RESULT($PDO_OCI_IC_PREFIX/include/oracle/$PDO_OCI_IC_VERS/client)
        elif test -f $PDO_OCI_IC_PREFIX/lib/oracle/$PDO_OCI_IC_VERS/client/include/oci.h ; then
          PHP_ADD_INCLUDE($PDO_OCI_IC_PREFIX/lib/oracle/$PDO_OCI_IC_VERS/client/include)
          AC_MSG_RESULT($PDO_OCI_IC_PREFIX/lib/oracle/$PDO_OCI_IC_VERS/client/include)
        else
          AC_MSG_ERROR([I'm too dumb to figure out where the include dir is in your instant client install])
        fi
        PDO_OCI_LIB_DIR="$PDO_OCI_IC_PREFIX/lib/oracle/$PDO_OCI_IC_VERS/client/lib"
        PDO_OCI_VERSION="`echo $PDO_OCI_IC_VERS | cut -d. -f1-2`"
      else
        if test -d "$PDO_OCI_DIR/rdbms/public"; then
          PHP_ADD_INCLUDE($PDO_OCI_DIR/rdbms/public)
          PDO_OCI_INCLUDES="$PDO_OCI_INCLUDES -I$PDO_OCI_DIR/rdbms/public"
        fi
        if test -d "$PDO_OCI_DIR/rdbms/demo"; then
          PHP_ADD_INCLUDE($PDO_OCI_DIR/rdbms/demo)
          PDO_OCI_INCLUDES="$PDO_OCI_INCLUDES -I$PDO_OCI_DIR/rdbms/demo"
        fi
        if test -d "$PDO_OCI_DIR/network/public"; then
          PHP_ADD_INCLUDE($PDO_OCI_DIR/network/public)
          PDO_OCI_INCLUDES="$PDO_OCI_INCLUDES -I$PDO_OCI_DIR/network/public"
        fi
        if test -d "$PDO_OCI_DIR/plsql/public"; then
          PHP_ADD_INCLUDE($PDO_OCI_DIR/plsql/public)
          PDO_OCI_INCLUDES="$PDO_OCI_INCLUDES -I$PDO_OCI_DIR/plsql/public"
        fi
        if test -d "$PDO_OCI_DIR/include"; then
          PHP_ADD_INCLUDE($PDO_OCI_DIR/include)
          PDO_OCI_INCLUDES="$PDO_OCI_INCLUDES -I$PDO_OCI_DIR/include"
        fi
    
        if test -f "$PDO_OCI_DIR/lib/sysliblist"; then
          PHP_EVAL_LIBLINE(`cat $PDO_OCI_DIR/lib/sysliblist`, PDO_OCI_SYSLIB)
        elif test -f "$PDO_OCI_DIR/rdbms/lib/sysliblist"; then
          PHP_EVAL_LIBLINE(`cat $PDO_OCI_DIR/rdbms/lib/sysliblist`, PDO_OCI_SYSLIB)
        fi
        PDO_OCI_LIB_DIR="$PDO_OCI_DIR/lib"
        AC_PDO_OCI_VERSION($PDO_OCI_DIR)
      fi
    
      case $PDO_OCI_VERSION in
        8.0)
          PHP_ADD_LIBRARY_WITH_PATH(nlsrtl3, "", PDO_OCI_SHARED_LIBADD)
          PHP_ADD_LIBRARY_WITH_PATH(core4, "", PDO_OCI_SHARED_LIBADD)
          PHP_ADD_LIBRARY_WITH_PATH(psa, "", PDO_OCI_SHARED_LIBADD)
          PHP_ADD_LIBRARY_WITH_PATH(clntsh, $PDO_OCI_LIB_DIR, PDO_OCI_SHARED_LIBADD)
          ;;
    
        8.1)
          PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)
          ;;
    
        9.0)
          PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)
          ;;
    
        10.1)
          PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)
          ;;
        10.2)
          PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)
          ;;
        11.2)
          PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)
          ;;
        *)
          AC_MSG_ERROR(Unsupported Oracle version! $PDO_OCI_VERSION)
          ;;
      esac
    
      PHP_ADD_LIBPATH($PDO_OCI_LIB_DIR, PDO_OCI_SHARED_LIBADD)
    
      PHP_CHECK_LIBRARY(clntsh, OCIEnvCreate,
      [
        AC_DEFINE(HAVE_OCIENVCREATE,1,[ ])
      ], [], [
        -L$PDO_OCI_LIB_DIR $PDO_OCI_SHARED_LIBADD
      ])
    
      PHP_CHECK_LIBRARY(clntsh, OCIEnvNlsCreate,
      [
        AC_DEFINE(HAVE_OCIENVNLSCREATE,1,[ ])
      ], [], [
        -L$PDO_OCI_LIB_DIR $PDO_OCI_SHARED_LIBADD
      ])
    
      dnl
      dnl Check if we need to add -locijdbc8 
      dnl
      PHP_CHECK_LIBRARY(clntsh, OCILobIsTemporary,
      [
        AC_DEFINE(HAVE_OCILOBISTEMPORARY,1,[ ])
      ], [
        PHP_CHECK_LIBRARY(ocijdbc8, OCILobIsTemporary,
        [
          PHP_ADD_LIBRARY(ocijdbc8, 1, PDO_OCI_SHARED_LIBADD)
          AC_DEFINE(HAVE_OCILOBISTEMPORARY,1,[ ])
        ], [], [
          -L$PDO_OCI_LIB_DIR $PDO_OCI_SHARED_LIBADD
        ])
      ], [
        -L$PDO_OCI_LIB_DIR $PDO_OCI_SHARED_LIBADD
      ])
    
      dnl
      dnl Check if we have collections
      dnl
      PHP_CHECK_LIBRARY(clntsh, OCICollAssign,
      [
        AC_DEFINE(HAVE_OCICOLLASSIGN,1,[ ])
      ], [], [
        -L$PDO_OCI_LIB_DIR $PDO_OCI_SHARED_LIBADD
      ])
    
      dnl Scrollable cursors?
      PHP_CHECK_LIBRARY(clntsh, OCIStmtFetch2,
      [
         AC_DEFINE(HAVE_OCISTMTFETCH2,1,[ ])
      ], [], [
        -L$PDO_OCI_LIB_DIR $PDO_OCI_SHARED_LIBADD
      ])
    
      ifdef([PHP_CHECK_PDO_INCLUDES],
      [
        PHP_CHECK_PDO_INCLUDES
      ],[
        AC_MSG_CHECKING([for PDO includes])
        if test -f $abs_srcdir/include/php5/ext/pdo/php_pdo_driver.h; then
          pdo_inc_path=$abs_srcdir/ext
        elif test -f $abs_srcdir/include/php/ext/pdo/php_pdo_driver.h; then
          pdo_inc_path=$abs_srcdir/ext
        elif test -f $abs_srcdir/ext/pdo/php_pdo_driver.h; then
          pdo_inc_path=$abs_srcdir/ext
        elif test -f $prefix/include/php5/ext/pdo/php_pdo_driver.h; then
          pdo_inc_path=$prefix/include/php5/ext
        elif test -f $prefix/include/php/ext/pdo/php_pdo_driver.h; then
          pdo_inc_path=$prefix/include/php/ext
        else
          AC_MSG_ERROR([Cannot find php_pdo_driver.h.])
        fi
        AC_MSG_RESULT($pdo_inc_path)
      ])
    
      PHP_NEW_EXTENSION(pdo_oci, pdo_oci.c oci_driver.c oci_statement.c, $ext_shared,,-I$pdo_inc_path)
    
      PHP_SUBST_OLD(PDO_OCI_SHARED_LIBADD)
      PHP_SUBST_OLD(PDO_OCI_DIR)
      PHP_SUBST_OLD(PDO_OCI_VERSION)
    
      ifdef([PHP_ADD_EXTENSION_DEP],
      [
        PHP_ADD_EXTENSION_DEP(pdo_oci, pdo)
      ])
    
    fi
    
    fi
    

    【讨论】:

      【解决方案2】:

      您是否尝试过更新autoconf 或从源代码编译?

      我在运行 phpize 时遇到了同样的问题。

      【讨论】:

        猜你喜欢
        • 2016-12-02
        • 2012-02-09
        • 1970-01-01
        • 2014-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多