Linux下PHP7.2扩展
前言
由于公司某项目需要连接oracle数据库,该项目使用的开发语言为PHP,故需要对PHP进行扩展
环境说明
服务器:Centos7
PHP:7.2, 源码安装;安装路径:/usr/local/xxx/php-7.2
扩展过程
前期准备
下载oracle所需客户端,我这里使用的是zip包.
下载后存放到某路径下,我这里为/data/soft目录下

注意,php7版本的某些扩展已经集合到php的源码中,我们可以直接对php的源码进行重新编译,而不需要再下载所谓的其他软件包
如果php在安装完后删除了,需要去官网找寻对应的版本下载并解压,我这里用的是7.2.11的

安装oracle的客户端
解压instantclient-basic-linux.x64-12.2.0.1.0.zip,并移动到/usr/lib/目录下
unzip instantclient-basic-linux.x64-12.2.0.1.0.zip
mv instantclient_12_2/ /usr/lib
解压instantclient-sdk-linux.x64-12.2.0.1.0.zip,将解压后的instantclient_12_2目录下sdk目录移动到/usr/lib/instantclient_12_2/下
unzip instantclient-sdk-linux.x64-12.2.0.1.0.zip
cp -rf instantclient_12_2/sdk/ /usr/lib/instantclient_12_2/
配置环境变量
vim ~/.bash_profile
export ORACLE_HOME=/usr/lib/instantclient_12_2
export LD_LIBRARY_PATH=/usr/lib/instantclient_12_2
export PATH=$ORACLE_HOME:$LD_LIBRARY_PATH:$PATH
source ~/.bash_profile
//查看环境变量,检验配置是否正确
echo $PATH

创建软连接
进入oracle目录
cd /usr/lib/instantclient_12_2
ln -s libclntsh.so.12.1 libclntsh.so
ln -s libclntshcore.so.12.1 libclntshcore.so 注意 libclntsh.so.12.1 根据下载版本不同而不同。如在 Oracle11.* 的版本则为 libclntsh.so.11.1。
而且该链接必须配置,否则在以下的 configure 配置步骤将会报错而导致配置失败。
编译扩展oci8
cd /data/soft/php-7.2.11/ext/oci8
//执行phpize
/usr/local/xxx/php-7.2/bin/phpize
//生成configure文件后执行configure
./configure --with-php-config=/usr/local/xxx/php-7.2/bin/php-config --with-oci8=shared,instantclient,/usr/lib/instantclient_12_2
//编辑过程中如果有问题就解决问题,如果没有继续执行
make && make install
将生成的oci8.so 添加到php.ini
vim /usr/local/xxx/php-7.2/lib/php.ini

重启php查看扩展是否添加
systemctl restart php-fpm7
/usr/local/xxx/php-7.2/bin/php -m

如果添加扩展后执行php -m 报错则使用第二方法
报错信息如下
libaio.so.1: cannot open shared object file: No such file or director
解决
yum install libaio
/usr/local/xxx/php-7.2.11/bin/pecl install oci8
之后输入如下安装即可.
instantclient,/usr/lib/instantclient_12_2/ 然后重启php
编译扩展pdo_oci
cd /data/soft/php-7.2.11/ext/pdo_oci
//执行phpize
/usr/local/xxx/php-7.2/bin/phpize
//生成configure文件后执行configure
./configure --with-php-config=/usr/local/xxx/php-7.2/bin/php-config --with-pdo-oci=instantclient,/usr/lib/instantclient_12_2
//编辑过程中如果有问题就解决问题,如果没有继续执行
make && make install
将生成的pdo_oci.so 添加到php.ini
vim /usr/local/xxx/php-7.2/lib/php.ini

重启php查看扩展是否添加
systemctl restart php-fpm7
/usr/local/xxx/php-7.2/bin/php -m

总结
在进行php扩展的过程中,走了很多的坑,前前后后忙活了大约一天多的时间,总算是处理好了.
前期看各种博客,发现很多是类似的,都无法实现.上面说有用rpm,有用zip包的,
也有使用的版本为11.2的,也有12.2的.经过自己不断的摸索,加上网上的文章
后来终于使用12.2版本的zip包安装上了.
参考文献:
https://www.jianshu.com/p/664bff2cbae6#fn2
https://www.jianshu.com/p/3628374e9f91
Linux下PHP7.2扩展的更多相关文章
- linux下php7安装memcached、redis扩展
linux下php7安装memcached.redis扩展 1.php7安装Memcached扩展 比如说我现在使用了最新的 Ubuntu 16.04,虽然内置了 PHP 7 源,但 memcache ...
- linux下安装opcache扩展
linux下安装opcache扩展 参考:http://www.php.net/manual/zh/opcache.installation.php 1 2 3 4 5 6 7 wget http ...
- 总结 Linux 下安装 PHP 扩展步骤
总结一下 Linux 下安装 PHP 扩展步骤,这里以安装 PHP 的 redis 扩展为例. 一.拿到扩展包下载地址,下载扩展包 pecl 上搜索 redis wget http://pecl.ph ...
- linux 下安装php扩展
linux下安装php扩展 步骤: 1.在扩展解压包目录执行 phpize 2.执行 ./configure --with-php-config=/usr/local/php/bin/php-conf ...
- linux下安装PHP扩展memcache
公司的服务器 CentOS 7.5,PHP 5.6 下面都是最新的版本(支持到PHP5.6) 如需php7 下支持memcache扩展,请移步 https://www.cnblogs.com/h ...
- linux安装PHP7以及扩展
Linux下安装PHP7 事先升级gcc4.8,然后安装PHP7,安装步骤参考:CentOS安装PHP7 1.Linux下编译的php没有php.ini 解决办法:从源代码目录中复制php.ini-d ...
- linux下PHP7安装memcache
1.memcache服务器的安装 .分别把memcached和libevent下载回来,放到 /tmp 目录下: # cd /tmp # wget http://www.danga.com/memca ...
- linux下安装swoole扩展
一.下载swoole 地址:https://github.com/swoole/swoole-src二.将下载好的压缩包放在linux服务器下三.解压压缩包到任意目录 # unzip swoole-s ...
- Linux下,PHP扩展安装(使用yum安装)
直接操作linux,在命令模式下用yum 来安装PHP的扩展: 扩展:mysqli 命令: yum install php-mysqli 扩展:pdo 命令: yum install php-pdo
随机推荐
- 本周JavaScript学习小结
应组长杨老师号召,写个js阶段性学习小结. emmm这周学了Linux进程通讯,学正则表达式尝试完成第一次编程作业,中秋还去平潭露营(所以...js学得很少hhh). 现在还处于感性认识阶段,浏览了一 ...
- How does Request.IsAuthenticated work?
How does Request.IsAuthenticated work? MSDN Code Sample Description: The following code example uses ...
- 请解释一下 JavaScript 的同源策略
概念: 同源策略是客户端脚本(尤其是Netscape Navigator2.0,其目的是防止某个文档或脚本从多个不同源装载. 这里的同源策略指的是:协议,域名,端口相同,同源策略是一种安全协议. 指一 ...
- Expression: __acrt_first_block == header
File: minkernel\crts\ucrt\src\appcrt\heap\debug_heap.cpp Line: 996 Expression: __acrt_first_block == ...
- 算法习题---4-6莫尔斯电码(UVa508)
一:题目 A-Z0-9分别对应一些莫尔斯电码字符串 A .- B -... C -.-. D -.. E . F ..-. G --. H .... I .. J .--- K -.- L .-.. ...
- Qt编写自定义控件59-直方动态图
一.前言 直方动态图类似于音乐播放时候的柱状图展示,顶部提供一个横线条,当柱状上升的时候,该线条类似于帽子的形式冲到顶端,相当于柱状顶上去的感觉,给人一种动态的感觉,听音乐的同时更加赏心悦目,原理比较 ...
- Linux -- GCC Built-in functions for atomic memory access
下列内建函数旨在兼容Intel Itanium Processor-specific Application Binary Interface, section 7.4. 因此,这些函数区别于普通的G ...
- python 基础之确认文件是否存在
def check_exist_bills(): file_dir=os.listdir('../db') bills_db_list=[] for item in file_dir: if item ...
- (七)UML之用例图
用例图主要用来描述“用户.需求.系统功能单元”之间的关系.它展示了一个外部用户能够观察到的系统功能模型图. [用途]:帮助开发团队以一种可视化的方式理解系统的功能需求. 用例图所包含的元素如下: 1. ...
- Spring Cloud(6.2):搭建OAuth2 Client
配置web.xml 添加spring-cloud-starter-security,spring-security-oauth2-autoconfigure和spring-boot-starter-o ...