• Linux下php5.3编译oracle客户端


    因项目需要在linux下进行php5.3的oracle客户端编译,简要介绍一下步骤及走过的弯路。

    1.下载Oracle客户端程序包,其中包含OCI、OCCI和JDBC-OCI等相关文件。

    1.1下载文件地址

    http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

    根据操作系统的版本选择对应的软件,我需要的是X86_64选择

    Instant Client for Linux x86-64

    1.2需要下载的文件如下:

    oracle-instantclient11.1-basic-11.1.0.7.0-1.x86_64.rpm

    oracle-instantclient11.1-devel-11.1.0.7.0-1.x86_64.rpm

    oracle-instantclient11.1-sqlplus-11.1.0.7.0-1.x86_64.rpm

    需要强调的一点是这里需要注册一个oracle的账户才能正常下载。

    2.安装Oracle客户端程序包。

    将程序包上传到服务器指定目录里

    chmod +x *.rpm

    #给RPM包赋执行权限
    rpm -ivh oracle-instantclient11.1-basic-11.1.0.7.0-1.x86_64.rpm oracle-instantclient11.1-devel-11.1.0.7.0-1.x86_64.rpm oracle-instantclient11.1-sqlplus-11.1.0.7.0-1.x86_64.rpm

    #安装RPM包
    echo "/usr/lib/oracle/11.1/client64/lib/" > /etc/ld.so.conf.d/oracle_client.conf

    #将库路径加到默认加载中
    /sbin/ldconfig

    #重新加载动态链接库

    3.安装OCI8的php扩展(这里指定php的安装路径为/usr/local/webserver/php)

    yum install libaio

    #yum安装libaio库,libaio是Linux下的一个异步非阻塞接口,它提供了以异步非阻塞方式来读写文件的方式,读写效率比较高

    wget http://pecl.php.net/get/oci8-1.4.10.tgz

    #下载OCI扩展

    tar zxvf oci8-1.4.10.tgz

    #解压

    cd oci8-1.4.10
    /usr/local/webserver/php/bin/phpize CFLAGS="-I/usr/lib/oracle/11.1/client64" CXXFLAGS="-I/usr/lib/oracle/11.1/client64"

    #使用phpize准备 PHP 外挂模块的编译环境,会根据指定的环境变量生成编译时需要的makefile,phpize是属于php-devel的内容,所以centos下只要运行yum install php-devel进行安装即可

    ./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-oci8=/usr/lib/oracle/11.1/client64
    make
    make install

    #编译,安装

    需要强调的是make的时候会报错,显示各种找不到库文件,需要对makefile文件进行修改加入oralce的运行库地址

    打开makefile,寻找INCLUDE,形式如下:

    INCLUDES = -I/usr/local/php/include/php -I/usr/include/oracle/10.2.0.3/client

    然后在末尾加上="-I/usr/lib/oracle/11.1/client64,然后重新make就会成功了。

    4.修改PHP.ini(/usr/local/webserver/php/etc/php.ini)

    在extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/"后增加一行:

    extension = "oci8.so"

    5.重启apache让OCI生效

    6.在web目录下创建phpinfo.php文件在其中输入一下内容,并通过web访问

    <?php

    phpinfo();

    ?>

    如果找到OCI8的部分就说明OCI安装正常了,如下图所示

    image

    接下来就能通过php访问oracle数据库了,需要注意的是php下Oracle的连接字符串

    <?php

    $username='***';
    $passwd='***';
    $protocol='TCP';
    $SERVICE_NAME='***';
    $ORACLE_SERVER_IP_ADDRESS='***.***.***.***';
    $Port='1521';

    $db = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = $protocol)(HOST = $ORACLE_SERVER_IP_ADDRESS)(PORT = $Port)))(CONNECT_DATA=(SID=$SERVICE_NAME)))";
    $conn = oci_connect($username,$passwd, $db);
    PutEnv("NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8");
    if (!$conn) {

        $e = oci_error();
        print htmlentities($e['message']);
        exit;
    }else {
        echo "连接oracle成功!";
        return $conn;
    }

    ?>

     

    作者: 付海军
    出处:http://fuhj02.cnblogs.com
    版权:本文版权归作者和博客园共有
    转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
    要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接且保证内容完整!否则必究法律责任!
    个人网站: http://www.fuhaijun.com/

  • 相关阅读:
    MyBatis学习篇
    常见两大类(个人和企业)登记主体小程序的区别
    Redis学习篇
    Spring注解之参数校验@Validated和@Valid
    Spring学习篇
    Windows安装OnlyOfiice教程
    Java序列化和反序列化
    数据库种类大全
    C# Web请求URL编码转换 URL转码 UrlDecode UrlEncode
    使用DockerCertBot获取SSL证书
  • 原文地址:https://www.cnblogs.com/fuhj02/p/3375144.html
Copyright © 2020-2023  润新知