【问题标题】:pdo_oci make does not workpdo_oci make 不起作用
【发布时间】:2014-01-19 09:42:21
【问题描述】:

最近我将我的 opensuse 12.3 更新为较新的 13.1

不幸的是,我无法编译所需的 pdo_oci.so。 使用本指南,您可以在 12.3 上编译扩展:

http://forums.opensuse.org/english/other-forums/development/programming-scripting/418966-installing-pdo_oci-php.html

但不幸的是,在实际版本中,我正在努力寻找解决方案。 目前我正在尝试执行make,但出现以下错误:

/home/temp/PDO_OCI-1.0/pdo_oci.c:34:1: error: unknown type name 'function_entry'
 function_entry pdo_oci_functions[] = {
 ^
/home/temp/PDO_OCI-1.0/pdo_oci.c:35:2: warning: braces around scalar initializer [enabled by default]
  {NULL, NULL, NULL}
  ^
/home/temp/PDO_OCI-1.0/pdo_oci.c:35:2: warning: (near initialization for 'pdo_oci_functions[0]') [enabled by default]
/home/temp/PDO_OCI-1.0/pdo_oci.c:35:2: warning: initialization makes integer from pointer without a cast [enabled by default]
/home/temp/PDO_OCI-1.0/pdo_oci.c:35:2: warning: (near initialization for 'pdo_oci_functions[0]') [enabled by default]
/home/temp/PDO_OCI-1.0/pdo_oci.c:35:2: warning: excess elements in scalar initializer [enabled by default]
/home/temp/PDO_OCI-1.0/pdo_oci.c:35:2: warning: (near initialization for 'pdo_oci_functions[0]') [enabled by default]
/home/temp/PDO_OCI-1.0/pdo_oci.c:35:2: warning: excess elements in scalar initializer [enabled by default]
/home/temp/PDO_OCI-1.0/pdo_oci.c:35:2: warning: (near initialization for 'pdo_oci_functions[0]') [enabled by default]
/home/temp/PDO_OCI-1.0/pdo_oci.c:56:2: warning: initialization from incompatible pointer type [enabled by default]
  pdo_oci_functions,
  ^
/home/temp/PDO_OCI-1.0/pdo_oci.c:56:2: warning: (near initialization for 'pdo_oci_module_entry.functions') [enabled by default]

make: * [pdo_oci.lo] 错误 1

有人知道发生了什么吗?

【问题讨论】:

  • 找到了一个解决方案,我不太确定为什么,但它可以在 pdo_oci.c 第 36 行将 function_entry 替换为 zend_function_entry

标签: php pdo opensuse oracle-call-interface


【解决方案1】:

这意味着在编译时缺少“pdo_oci.lo”。简单的解决方案是将 oci 库从您的 Oracle-Instant-Client 库复制到编译路径,如下所示:

cp -f /usr/include/oracle/10.2.0.3/client64/* include/

希望对你有帮助!

您可以通过以下链接找到更多详细信息: http://www.indiangnu.org/2010/how-to-install-pdo_oci-extension-for-php-5/

【讨论】:

    【解决方案2】:

    只需在 pdo_oci 中将函数“function_entry”名称更改为“zend_function_entry”即可。

    【讨论】:

    • 是的,请详细说明你的答案
    • 他在告诉你如何摆脱“错误:未知类型名称'function_entry'”
    • 修复了这个答案的相关问题。
    【解决方案3】:

    hefengxian he 的解决方案对我有用,但我还不能制作 cmets,所以这就是我所做的。

    编辑文件 pdo_oci.c,在第 34 行附近搜索:

    /* {{{ pdo_oci_functions[] */
    function_entry pdo_oci_functions[] = {
        {NULL, NULL, NULL}
    };
    /* }}} */
    

    替换为

    /* {{{ pdo_oci_functions[] */
    zend_function_entry pdo_oci_functions[] = {
        {NULL, NULL, NULL}
    };
    /* }}} */
    

    再次运行 make。

    【讨论】:

    • 您的建议使makemake install 继续。但它给出了加载错误,pdo_oci.so: undefined symbol: php_pdo_stmt_delref in Unknown on line 0(我的环境:Ubuntu 14.04 64bit;Oracle Instant Client 12.1.0.2.0;PDO_OCI 1.0)
    • 不幸的是,我不知道解决方案。它对我有用,但我最终使用命令“pecl install pdo_oci”更轻松地安装了扩展。
    • 加载通用 pdo,然后加载 pdo_oci 解决了我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 2014-07-08
    • 2014-08-03
    • 2013-02-01
    相关资源
    最近更新 更多