【问题标题】:error: oci.h: No such file or directory错误:oci.h:没有这样的文件或目录
【发布时间】:2016-09-02 00:04:27
【问题描述】:

我正在尝试在oracle 11和php5.3下的Centos 5.11中安装oci8-1.4.9,但是我在使用时遇到错误

pecl install oci8-1.4.9

错误

 config.status: creating config.h
running: make
/bin/sh /var/tmp/pear-build-root/oci8-1.4.9/libtool --mode=compile gcc  -I. -I/tmp/tmp9GRxQr/oci8-1.4.9 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/oci8-1.4.9/include -I/var/tmp/pear-build-root/oci8-1.4.9/main -I/tmp/tmp9GRxQr/oci8-1.4.9 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext  -DHAVE_CONFIG_H  -g -O2   -c /tmp/tmp9GRxQr/oci8-1.4.9/oci8.c -o oci8.lo
mkdir .libs
 gcc -I. -I/tmp/tmp9GRxQr/oci8-1.4.9 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/oci8-1.4.9/include -I/var/tmp/pear-build-root/oci8-1.4.9/main -I/tmp/tmp9GRxQr/oci8-1.4.9 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -DHAVE_CONFIG_H -g -O2 -c /tmp/tmp9GRxQr/oci8-1.4.9/oci8.c  -fPIC -DPIC -o .libs/oci8.o
In file included from /tmp/tmp9GRxQr/oci8-1.4.9/oci8.c:58:
/tmp/tmp9GRxQr/oci8-1.4.9/php_oci8_int.h:56:17: error: oci.h: No such file or directory
In file included from /tmp/tmp9GRxQr/oci8-1.4.9/oci8.c:58:
/tmp/tmp9GRxQr/oci8-1.4.9/php_oci8_int.h:113: error: expected specifier-qualifier-list before 'OCIEnv'
/tmp/tmp9GRxQr/oci8-1.4.9/php_oci8_int.h:122: error: expected specifier-qualifier-list before 'OCIEnv'
/tmp/tmp9GRxQr/oci8-1.4.9/php_oci8_int.h:152: error: expected specifier-qualifier-list before 'dvoid'

....

/tmp/tmp9GRxQr/oci8-1.4.9/oci8.c:3309: error: 'php_oci_spool' has no member named 'spool_hash_key'
/tmp/tmp9GRxQr/oci8-1.4.9/oci8.c: At top level:
/tmp/tmp9GRxQr/oci8-1.4.9/oci8.c:3321: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'php_oci_ping_init'
make: *** [oci8.lo] Error 1
ERROR: `make' failed

我该如何解决?

【问题讨论】:

    标签: php oracle pecl oci8


    【解决方案1】:

    我在 Ubuntu 14.04 LTS 和 OCI 扩展上也遇到过类似的问题。

    我通过“外星人”工具包安装了 Oracle Instant Client,并设置了 LD 库路径和 ORACLE_HOME 环境。命令 sqlplus 正在运行,我可以访问 oracle 数据库。

    OCI PHP/PECL 接口的安装并非开箱即用。库和二进制文件位于目录“/usr/lib/oracle/12.1/client64”中,包含头文件位于“/usr/include/oracle/12.1/client64”下

    In file included from /tmp/pear/temp/oci8/oci8.c:48:0:
    /tmp/pear/temp/oci8/php_oci8_int.h:60:17: fatal error: oci.h: No such file or directory
     #include <oci.h>
    

    我们必须通过pecl和编译环境来获取包含路径

     C_INCLUDE_PATH=/usr/include/oracle/12.1/client64 pecl install oci8-2.0.12
    

    现在 pecl 安装成功了 :) 我希望在 CentOS 上也会出现同样的问题。

    【讨论】:

    • 此解决方案也适用于 Ubuntu 18.04 LTS (Bionic Beaver)。
    猜你喜欢
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 2013-08-08
    • 2013-11-04
    • 2012-02-18
    • 2012-10-21
    • 2011-03-22
    • 2015-12-29
    相关资源
    最近更新 更多