动态编译添加php模块

注意:转载请注明出处:http://www.programfish.com/blog/?p=85
在很多时候我们用linux里搭建web服务器的时候会需要编译安装php套件,而在编译安装后可能又会需要添加一些编译安装时没有指定要编译进去的模块,例如如下情况:
mysql.so 或mysqli.so 、mbstring.so zlib.so 等模块。
这里提示一下:
如果你有安装过phpmyadmin而且在安装配置好之后打开首页是空白的,那么很有可能就是你的php没有mysql和mbstring这两个模块。
还有就是在线安装wordpress插件时提示没有zlib插件也是因为你的php环境里没有 zlib.so 这个模块。
以上都是笔者经历过的,希望可以对解决你的问题有些帮助。
好了,现在进入正题,动态编译并添加php模块:
注明一下,本博文只讨论已经安装了php的linux环境。
如果你不是想动态添加模块而是想重新安装php环境的请移步:
Linux下Php环境安装:http://www.cnblogs.com/fly1988happy/archive/2011/12/14/2288096.html
此时你需要保存有以前编译安装php时候用的php源码。如果没有,你可以到http://cn2.php.net/downloads.php这里下载与你已经安装了的php版本一样的源码包(这里版本最好一样或者接近,版本不一样可能会存在不适配)。
还有你需要知道你的php是安装在哪里的,因为等下要用到安装目录下/bin/phpize 这个工具。
如果你不知道你的php目录安装在哪里,可以find命令来查找phpize 这个文件在哪里。

lfly@linux-oj9e:~> sudo find / -name phpize
这里我找到我的php就安装在/php下。
好了,这里我下载一个php-5.5.18.tar.gz这个源码包。
下载好了以后用tar -zxvf 解压。(只针对.tar.gz压缩包)

lfly@linux-oj9e:~/temp> tar -zxvf php-5.5.18.tar.gz
解压后得到一个php-5-5-18文件夹
然后cd 进去那个目录里面的ext 目录:
lfly@linux-oj9e:~/temp> cd php-5.5.18/ext

用ls 命令列出文件后可以看到很多文件夹:

这些就是你要编译的模块的源码目录。这里我假设要编译的是mysql模块,那们我们就cd 到mysql 这个目录里,如果你要编译其它模块,那么就cd进对应那个模块。

lfly@linux-oj9e:~/temp/php-5.5.18/ext/mysql> /php/bin/phpize
Cd 进去后我们调用上面提到的那个phpize脚本。
Phpize脚本是什么?
这里提及一下:
Phpize可以理解为侦察环境的作用。phpize工具会根据你已经安装的php的配置情况生成对应的configure文件。
执行这个命令后可能会提示没有安装 autoconf这个程序,如果这样你就要安装好这个软件再来运行这个命令。
我这里是没有问题的:

Phpize 运行没有问题后就用 ./configure –with-php-config=/php/bin/php-config
这里/php/bin/php-config要换成你的Php安装目录。比如是/usr/local/aaa那么你就搭成/usr/local/aaa/bin/php-config
执行这步后如果没有报错就执行make 命令。

如果执行make 命令也没有报错,那么接着执行make install 命令。

我这里make install 发现报错,因为普通用户没有权限把编译好的模块安装到php的安装目录下。

此时可以用sudo执行make install 命令或者直接切换到root用户下执行,执行时需要输入你的密码。
Make install安装成功后还要干两件事:
其一是: 在php.ini的配置文件里加上一句:

extension=mysql.so
这里假设是编译mysql模块,如果是其它就其它模块名.
比如:

如果你不知道你刚编译的模块是什么名称,你可以到php的模块目录下查看下:

我这里已经编译安装了4个模块。
第二件事就是重启下你的apache。(如果你安装的是apache提供web服务的)
欢迎访问本人网站:http://www.programfish.com
LinuxCoder 社区: http://linuxcoder.org
注意:转载请注明 “作者:广州Linux爱好者+云计算 刁金明”
动态编译添加php模块的更多相关文章
- ANGULARJS 动态编译添加到dom中
在使用angularjs 时,希望通过动态构建angular模版,再通过angular进行展示. 使用 方法如下: <html ng-app="app"> <he ...
- Nginx编译添加新模块
目录 一.简介与思路 一.简介与思路 当前适用于nginx已经在安装过了,如果没安装过,直接在编译时候添加模块即可. Nginx主要程序就是nginx这个二进制脚本,只要在编译一个nginx脚本替换掉 ...
- nginx重新编译添加ssl模块
https://www.cnblogs.com/zhming26/p/6278667.html https nginx配置 找到安装nginx的源码根目录,如果没有的话下载新的源码 http://ng ...
- Nginx重新编译添加新模块
找到nginx的安装包目录,如果没有的话去官网重新下载 查看ngixn版本极其编译参数 /usr/local/nginx/sbin/nginx -V 进入nginx源码目录,重新设置nginx ./c ...
- 既有Nginx重新动态编译增加http2.0模块
1.HTTP2.0 HTTP2.0相较于http1.x,大幅度的提升了web性能,在与http1.1完全语义兼容的基础上,进一步减少了网络延时.我们现在很多对外的网站都采用https,但是F12一下看 ...
- 编译nginx平滑添加stream模块
1.操作背景 操作系统版本:CentOS Linux release (Core) nginx版本:1.13.4 nginx从1.9.0版本开始,新增了ngx_stream_core_module模块 ...
- apache动态编译与静态编译
静态: 在使用./configure 编译的时候,如果不指定某个模块为动态,即没有使用:enable-mods-shared=module或者enable-module=shared 这个2个中的一个 ...
- Apache静态编译与动态编译详解
Apache拥有4层结构,从核心到外层的module.而外层的module可以用通过静态和动态两种方式与Apache共同工作.这也就引入下文的“动态”和“静态”两种编译安装方式: 静态编译: 编译的时 ...
- nginx编译安装新模块
nginx的模块是需要重新编译nginx,而不是像apache一样配置文件引用.so 这里以安装第三方ngx_http_google_filter_module模块为例 下载第三方扩展模块ngx_ht ...
随机推荐
- 修改Activity的继承类导致程序闪退
今天对老项目重构,重新写了BaseActivity.其中有一处改动是把原来的父类Activity改成了AppCompatActivity. 这一处的改动导致了程序在启动的时候直接闪退. 查看log输出 ...
- 编译cwm-recovery(含部分修改步骤)[转]
1. 同步cm10.1的源码,具体操作请百度之-- 2. 打开终端,到源码目录下: cd Android/cm10.1 //我的源码目录 3. 如果不想使用cm10 ...
- Unity3d有关图形尺寸大小的注意事项
主要参考了官方文档,然后根据个人的理解撰写该文.Unity3D支持的图形文件格式有 PSD, TIFF, JPG, TGA, PNG, GIF, BMP, IFF, PICT(但根据本人的亲手测试,U ...
- MFC消息映射与命令传递
题外话:刚开始学视窗程序设计的时候,我就打印了一本Windows消息详解,里面列举了各种已定义消息的意义和作用,共10多页,在编程的时候翻翻,有时觉得很受用.我发觉很多编程的朋友,虽然每天都面对消息, ...
- QEventLoop 的使用两例
熟悉的陌生人 Qt 是事件驱动的,所以当你用Qt的时候,几乎时时刻刻和 QEventLoop 打交道.,只是你可能没有意识到: QCoreApplicaton::exec() QApplication ...
- bzoj 1194
http://www.lydsy.com/JudgeOnline/problem.php?id=1194 我们看看怎么判断B是否是A的升级. 我们新建一个图G,每个点为一个二元组(i,j),表示A的i ...
- Delphi7下实现HTTP的Post操作 转
Delphi7下实现HTTP的Post操作 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Gra ...
- openstack组件手动部署整合
preface:当你完全且正确的配置好整个OpenStack ENV 你将能看到的和体验到的!!! 我们先来看看简单效果吧,祝君能在这条路上走的更远,更好;
- css与 js动画 优缺点比较
我们经常面临一个抉择:到底使用JavaScript还是CSS动画,下面做一下对比 JS动画 缺点:(1)JavaScript在浏览器的主线程中运行,而主线程中还有其它需要运行的JavaScript脚本 ...
- JQuery的父、子、兄弟节点查找,节点的子节点循环
Query.parent(expr) //找父元素 jQuery.parents(expr) //找到所有祖先元素,不限于父元素 jQuery.children( ...