CENTOS6下PHP 安装 oci8 pdo-oci

摘要: 最近一个项目需要php对Oracle支持,所以要部署这个环境。

服务器是yum配置的amp环境,本着不重新编译的原则去操作。本机已有环境为PHP,apache,mysql,需要连oracle数据库,所以需要打开oracle扩展。我们需要做的工作有:安装oracle客户端、pdo_oci扩展、oci8扩展。

前期准备工作:

$ sudo yum install php-pear php-devel zlib zlib-devel bc libaio glibc
$ sudo yum groupinstall "Development Tools"

因为扩展还是需要重新编译,所以对编译器也进行了,更新。

yum install gcc-c++
yum install gcc-g77

目标数据库是11g,去Oracle官网下载对应版本(没搞过oracle至少我们这么理解的),

官网下载地址:

http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

下载文件:

oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm

oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm

php扩展文件下载:

http://pecl.php.net/package/PDO_OCI  PDO_OCI-1.0.tgz  Oracle的PDO接口

http://pecl.php.net/package/oci8  oci8-2.0.8.tgz Oracle扩展

安装:

安装Oraclecient

技巧:

rpm -qpl 可以查看rpm包会在哪些路径安装文件

1.安装rpm包

rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
rpm -ivh oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm

以下几条命令仅供参考:

rpm -qa | grep oracle     //查看oracle是否安装  
rpm -qa   //查看所有已安装的人rpm包  
rpm -e oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm //卸载已安装的rpm包  
rpm -ivh --force oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm //强制安装rpm包

2. 配置

修改/etc/ld.so.conf  或在ld.so.conf.d文件夹下添加oracle-x86_64.conf文件,写入安装oracle客户端的lib路径:

#vi /etc/ld.so.conf  
/usr/lib/oracle/11.2/client64/lib/     //加入此行,保存退出

或者

echo ‘/usr/lib/oracle/11.2/client64/lib/‘ > /etc/ld.so.conf.d/oracle-x86_64.conf

64位系统需要创建32位的软链接(这里可能是一个遗留bug,不然后面编译会出问题)

ln -s /usr/lib/oracle/11.2/client64 /usr/lib/oracle/11.2/client  
ln -s /usr/include/oracle/11.2/client64 /usr/include/oracle/11.2/client

定义环境变量

vi etc/profile

加入以下几行

export ORACLE_HOME=/usr/lib/oracle/11.2/client64/  
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64:$LD_LIBRARY_PATH  
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"

命令行输入以下语句使环境配置立即生效

#source /etc/profile

据说还可以这样,仅供参考:

Create a file inside /etc/profile.d named oracle.sh and put this as the content:

export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib

And run it so we’ll have LD_LIBRARY_PATH as an environment variable.

source /etc/profile.d/oracle.sh

安装oci8

编译的时候会出现错误:

error: oci8_dtrace_gen.h: No such file or directory

如果需要 DTRACE:

yum install systemtap-sdt-devel
export PHP_DTRACE=yes

如果不需要 DTRACE:

modify the file ‘php_oci8_int.h‘, change the 48th line

#include "oci8_dtrace_gen.h" to #undef HAVE_OCI8_DTRACE

一切就绪,编译安装

tar -xvf oci8-2.0.8.tgz  
cd oci8-2.0.8.tgz

/usr/bin/phpize
./configure --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client64/lib
make
make install

在/etc/php.d目录下增加配置文件20-oci8.ini

extension=oci8.so

用下面命令查看是否成功:

php -i | grep oci8

你可以看到下面类似的内容:

/etc/php.d/oci8.ini, oci8
oci8.connection_class => no value => no value
oci8.default_prefetch => 100 => 100 oci8.events => Off => Off oci8.max_persistent => -1 => -1 oci8.old_oci_close_semantics => Off => Off oci8.persistent_timeout => -1 => -1 oci8.ping_interval => 60 => 60 oci8.privileged_connect => Off => Off oci8.statement_cache_size => 20 => 20

安装PDO_OCI

tar -xvf PDO_OCI-1.0.tgz
cd PDO_OCI-1.0

防止pdo_oci对oracle11支持不足(pdo_oci可能不支持oracle11g,需要做个软链接成作为oracle10版本才能编译过去):

ln -s /usr/include/oracle/11.2 /usr/include/oracle/10.2.0.1  
ln -s /usr/lib/oracle/11.2 /usr/lib/oracle/10.2.0.1

还可以:
Inside the PDO_OCI-1.0 folder, edit the file named config.m4.
Find a pattern like this near line 10 and add these 2 lines:

elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.11.2; then
  PDO_OCI_VERSION=11.2

Find a pattern like this near line 101 and add these lines:

11.2)
  PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)
  ;;

编译的时候我还遇到了其他问题

pdo_oci.c:34: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘pdo_oci_functions’

在pdo_oci.c文件中

将 function_entry 改成 zend_function_entry

一切就绪,开始编译安装

/usr/bin/phpize
./configure --with-pdo-oci=instantclient,/usr,11.2
make
make install

在 /etc/php.d 目录下 新建文件 30-pdo_oci.ini
写入

extension=pdo_oci.so

用下面命令查看是否安装成功

php -i | grep oci

你会见到类似下面的内容

/etc/php.d/pdo_oci.ini,
PDO drivers => oci, odbc, sqlite

至此结束,请运行phpinfo()看看吧。

时间: 2024-09-29 18:14:45

CENTOS6下PHP 安装 oci8 pdo-oci的相关文章

CentOS6下编译安装Python2.7.6方法

关于在CentOS6下编译安装Python2.7.6的方法非常的多了,小编以前也介绍过相关的文章了,下面一聚教程小编再来为各位介绍一下吧,希望文章能帮助到各位. CentOS下面Python在升级到2.7.6的时候,没有找到安装包直接安装,只能通过源代码编译的方式来安装Python 2.7.6版本.这篇是编译和安装Python2.7.6的过程记录. CentOS系统中安装了development tools.要编译安装Python,执行下面代码:  代码如下 复制代码 $ pushd /usr/

Linux下PHP安装oci8扩展

PHP通常搭配Mysql使用,但有时候也会连接到Oracle数据库.安装PHP的oci8扩张之前,需要先安装Oracle Instant Client( basic 或 basic lite 版就行了).因为我们是从源码安装PHP扩展,所以还需要下载 Instant Client SDK.Oracle Instant Client相关软件包的下载请进入以下链接:http://www.oracle.com/technetwork/database/features/instant-client/i

CentOS6下Nginx安装配置

本人虚拟机安装的CentOS6.9和CentOS7.4都是仅主机模式,为了尝试不同方式安装nginx,将CnetOS6.9的网络模式切换成桥接模式.一:桥接模式下安装Nginx(CentOS6.9)--查看系统是否有Nginx[[email protected] ~]# find -name nginx--卸载原有的Nginx[[email protected] ~]# yum remove nginx--建立yum库vim /etc/yum.repos.d/nginx.repo --安装yum

CentOS6 下编译安装 MySQL 5.6.26

CentOS6下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.26. 一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | grep mysql 有的话通过下面的命令来卸载掉 rpm -e mysql // 普通删除模式 rpm -e --nodeps mysql // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除 二.安装编译MySQL需要的工具 安装g++和gdb yum

Centos6下rpm安装MySQL5.6

Centos6在rpm安装 rpm -ivh http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm yum install mysql-server –y 启动 service mysqld start 初始化 mysql_secure_installation Enter current password for root (enter for none): Set root password? [Y/n] Remo

CentOS6下编译安装zabbix_agent3.0客户端

zabbix3.0.5 Server端请移步至http://ljohn.blog.51cto.com/11932290/1869257 安装Zabbix3.0.5客户端 添加一台CentOS6.5 主机192.168.137.33 1.添加用户群组 # groupadd -g 201 zabbix # useradd -g zabbix -u 201 -s /sbin/nologin zabbix 2.解压安装包,编译安装 #tar -zxvf zabbix-3.0.5.tar.gz #cd z

CentOS6 下Vim安装和配置

1.系统只安装了vim-minimal,执行以下命令安装另外两个组件 yum install vim-common yum install vim-enhanced 2.安装ctags yum install ctags 下载linux-2.6.32.27内核源码并解压到~/arm/linux-2.6.32.27,进入该目录,生成索引文件 ctags -R * 3.安装插件(基本上就是解压到~/.vim目录):taglist/nerdcommenter/omnicppcomplete/echof

emqtt在centos6下的安装

1 emqtt下载地址 http://www.emqtt.com/downloads 右键 复制链接 http://www.emqtt.com/downloads/3011/centos6 2 打开服务器 下载 # 下载MQTT安装包 wget http://www.emqtt.com/downloads/3011/centos6 #解压安装包 unzip centos6 #进入文件夹 cd emqx #开始运行 ./bin/emqx start 其他命令 /bin/emqx stop./bin

Centos6.4下Nginx安装

Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过三年了.Igor 将源代码以类BSD许可证的形式发布. Nginx和Apache区别 Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多,其中包括新浪博客.新浪播客.网易新