LINUX下PHP编译添加相应的动态扩展模块so(不需要重新编译PHP,以openssl.so为例)
本文转自:原文链接 http://www.cnblogs.com/doseoer/p/4367536.html
网上我看到有很多相关的文章都是简述这个问题的,但毕竟因为LINUX版本众多,很多LIUNX命令或路径都有所差别,有时同样的命令却不能执行一样的操作。
这篇文章是我在实际运用当中配置成功的实例,希望对大家有所帮助,开源是来自每个人的无私帮助,每个人的成长都是需要别人的扶植!废话就说到这了!
http://php.net/downloads.php (相应PHP版本下载)
1、首先确定LINUX下已安装的PHP版本,因为不同PHP版本对于追加动态模块有兼容性问题(可能路径,配置?其他?),往往报错不能安装,追加的模块必须版本一致。
查看PHP版本有多种方法:
①运行php -v(但在我的64位LIUNX测试过没作用,原因你知道的了!)
②在已安装好的PHP路径下找到php-config并进行查看,可以vi或cat (关键字:version="XXXXXXX"为PHP版本号)
vi 或cat php-config
2、下载好的PHP源代码包需人工上传到FTP网络服务器上,这时你的tar包可能只是放在WWW下,为了你自己方便查找和使用,建议建立自己的source文件夹进行存放。
建立文件夹:mkdir XXXXXX(文件夹名)
移动或复制文件:mv或cp php.tar /sourece(注意路径,”/“我是在根目录下创建的临时文件夹!)
解压tar包:tar zxfv php.tar(源代码tar包)
3、现在进入正题了,以追加动态模块openssl.so为例,进入PHP源码文件夹后,执行phpize生成configure进行模块追加:
#cd /source/php/ext/openssl 进入源码包的OPENSSL模块文件夹
#/var/www/php/bin/phpize 注意这个是已安装好的PHP路径(有些是版本可能是在/usr/local/******下,每个人的安装习惯不同)
如出现以下错误:Cannot find config.m4. *****************************************
解决方法:
查看源码包OPENSSL文件夹下是否有config0.m4,如果有可执行,
#mv config0.m4 config.m4
4、进入最后的编译阶段了,我编译时是比较顺利的(有时ERROR如果出现,我也不好做阐述,只能靠自己查看errorlog日志了)
#./configure --with-openssl --with-php-config=/var/www/php/bin/php-config(注意:这个参数后的是你本机已安装好的PHP路径)
#make
#make test (测试编译结果)
#make install
当成功时会返回成功信息(注意查看,SO文件的所在位置):
Installing shared extensions: /usr/lib/20060613/(这路径是我虚拟的,正确请自己查找,会生成openssl.so文件)
一般规范点的话,会把追加的SO模块放在一个指定的文件夹里,就在PHP安装好的目录下的extensions文件夹内
#mv /*****/*****/openssl.so /var/www/php/lib/php/extensions
动态模块追加编译已全部完成了。。。。
最后就是要PHP支持加载这些追加的动态模块了,vi编辑PHP下的配置文件php.ini。
#vi /*******/*******/php.ini
进入编辑器后可以看到PHP的所有相关配置,查找extension_dir这个配置的选项,
vi后可直接‘/extension_dir '查找,找到后可能是这样的:
extension_dir = "./"
需修改成:
extension_dir = "/var/www/php/lib/php/extensions/" (注意是so文件的所在)
extension=openssl.so (so模块文件名)
最后保存退出! :wq!
接着就是重启 apache服务器了!(有说人不用,但也就一个命令,我觉得配置好重启还是安心点!)
可以用命令查看下PHP的运行加载: /var/www/php/bin/php -m|grep openssl (路径啥的我就不说了,就是安装好的PHP路径就是了)
出现的信息可能会出现一些错误,但都是没关系的:类似找不到什么DLL文件啊(openssl.dll之类的),别管他,DLL是WINDOWS主机服务器模块加载的类型,UNIX和LINUX是以SO为模块加载名的!
LINUX下PHP编译添加相应的动态扩展模块so(不需要重新编译PHP,以openssl.so为例)的更多相关文章
- Centos 7(Linux)环境下安装PHP(编译添加)相应动态扩展模块so(以openssl.so为例)
https://blog.csdn.net/shinesun001/article/details/54312402 在centos 7环境下搭建好Lnmp环境之后,发现安装的php有好多扩展都没有安 ...
- linux下查看和添加PATH环境变量
linux下查看和添加PATH环境变量 $PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻编译链接. 编辑你的 PA ...
- Linux下设置静态IP和获取动态IP的方法
Linux下为机器设置静态IP地址: vim /etc/sysconfig/network-scripts/ifcfg-eth0 修改这个文件内容如下形式: # Intel Corporation ...
- linux下不重启添加硬盘
linux下热加载磁盘 临时给虚拟机加了一块硬盘,增加后懒得重启,于是看了看热加载 [root@centos5 ~]# cat /proc/scsi/scsiAttached devices:Host ...
- Linux下crontab命令添加Kettle作业定时任务
1. 确保作业 $KETTLE_HOME/kitchen.sh -file=/data1/testdata/testkjb.kjb 或转换 $KETTLE_HOME/pan.sh -file=/dat ...
- 关于Linux下进程间使用共享内存和信号量通信的时的编译问题
今天在编译一个使用信号量实现进程同步时,出现了库函数不存在的问题.如下图 编译结果实际上是说,没include相应的头文件,或是头文件不存在(即系统不支持该库函数) 但我man shm_open是可以 ...
- Linux下查看和添加环境变量
转自:http://blog.sina.com.cn/s/blog_688077cf01013qrk.html $PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您 ...
- linux下PHP手动添加扩展库
1.进入php源程序目录中的ext目录中,这里存放着各个扩展模块的源代码,选择你需要的模块,比如curl模块: cd curl 执行phpize生成编译文件,phpize在PHP安装目录的bin目录下 ...
- linux下为php添加mongodb扩展
基于本博客yum安装的lamp环境,phpize 位于 /usr/bin,php-config 位于/usr/bin,php.ini 位于/etc/ 1.首先从http://pecl.php.net/ ...
随机推荐
- [CodeVs3196]黄金宝藏(DP/极大极小搜索)
题目大意:给出n(≤500)个数,两个人轮流取数,每次可以从数列左边或者右边取一个数,直到所有的数被取完,两个人都以最优策略取数,求最后两人所得分数. 显然这种类型的博弈题,第一眼就是极大极小搜索+记 ...
- Amphetamine的cf日记
之前挂上的 今天填坑 2018.2.14 #462 A 给两个集合,B分别可以从一个集合中选一个数,B想乘积最大,A想最小,A可以删除一个第一个集合中的元素,问最小能达到多少. 这题..水死啦.我居然 ...
- LOJ #6036.「雅礼集训 2017 Day4」编码 Trie树上2-sat
记得之前做过几道2-sat裸体,以及几道2-sat前缀优化建图,这道题使用了前缀树上前缀树优化建图.我们暴力建图肯定是n^2级别的,那么我们要是想让边数少点,就得使用一些骚操作.我们观察我们的限制条件 ...
- python基础----列表生成式、生成器表达式
结论: 1.把列表解析的[]换成()得到的就是生成器表达式 2.列表解析与生成器表达式都是一种便利的编程方式,只不过生成器表达式更节省内存 3.Python不但使用迭代器协议,让for循环变得更加通用 ...
- 根据数据库连接的java.sql.Connection获取数据库名称
// 获取数据库的元数据信息 DatabaseMetaData metaData = conn.getMetaData(); // 获取数据库名称的方法 System.out.println(meta ...
- SpringMVC <mvc:view-controller path=""/>标签
<mvc:view-controller path=""/>标签的作用 对应WEB-INF目录下面的JSP页面,我们知道是不能直接使用URL访问到.需要通过转发的方式, ...
- php7实现基于openssl的加密解密方法
还需要注意的是加密字符串长度问题,如果加密字符串长度太长需要进行分段加解密,如下代码: 加密:(公匙加密,私密一般用来解密) function encrypt($originalData){ $pub ...
- @Springboot搭建项目controller层接收json格式的对象失败
今天在使用swagger2测试的时候出错 1.@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说: ...
- 对于redis底层框架的理解(一)
近期学习了redis底层框架,好多东西之前都没听说过,算是大开眼界了. 先梳理下redis正常的通讯流程吧 首先服务器启动都有主函数main,这个main函数就在redis.c里 首先是initser ...
- 堡垒机初识--paramiko模块
一.paramiko模块 Python的paramiko模块基于SSH用于连接远程服务器并执行相关的操作. 1.1 在windows上安装paramiko模块 测试环境: win10 , python ...