linux搭建动态php,动态编译添加php模块

http://www.programfish.com/blog/?p=85 在很多时候我们用linux里搭建web服务器的时候会需要编译安装php套件,而在编译安装后可能又会需要添加一些编译安装时没有指定要编译进去的模块,例如如下情况: mysql.so 或mysqli.so 、mbstring.so zlib.so 等模块。

test.jsp?url=http%3A%2F%2Fwww.programfish.com%2Fblog%2Fwp-content%2Fuploads%2F2014%2F10%2Flinux.png&refer=http%3A%2F%2Fwww.cnblogs.com%2Fprogramfish%2Fp%2F4096206.html

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 这个文件在哪里。

test.jsp?url=http%3A%2F%2Fwww.programfish.com%2Fblog%2Fwp-content%2Fuploads%2F2014%2F10%2Fimage1.jpg&refer=http%3A%2F%2Fwww.cnblogs.com%2Fprogramfish%2Fp%2F4096206.html

lfly@linux-oj9e:~> sudo find / -name phpize

这里我找到我的php就安装在/php下。

好了,这里我下载一个php-5.5.18.tar.gz这个源码包。

下载好了以后用tar -zxvf 解压。(只针对.tar.gz压缩包)

test.jsp?url=http%3A%2F%2Fwww.programfish.com%2Fblog%2Fwp-content%2Fuploads%2F2014%2F10%2Fimage2.jpg&refer=http%3A%2F%2Fwww.cnblogs.com%2Fprogramfish%2Fp%2F4096206.html

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

test.jsp?url=http%3A%2F%2Fwww.programfish.com%2Fblog%2Fwp-content%2Fuploads%2F2014%2F10%2Fimage3.jpg&refer=http%3A%2F%2Fwww.cnblogs.com%2Fprogramfish%2Fp%2F4096206.html

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

test.jsp?url=http%3A%2F%2Fwww.programfish.com%2Fblog%2Fwp-content%2Fuploads%2F2014%2F10%2Fimage4.jpg&refer=http%3A%2F%2Fwww.cnblogs.com%2Fprogramfish%2Fp%2F4096206.html

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

test.jsp?url=http%3A%2F%2Fwww.programfish.com%2Fblog%2Fwp-content%2Fuploads%2F2014%2F10%2Fimage51.jpg&refer=http%3A%2F%2Fwww.cnblogs.com%2Fprogramfish%2Fp%2F4096206.html

lfly@linux-oj9e:~/temp/php-5.5.18/ext/mysql> /php/bin/phpize

Cd 进去后我们调用上面提到的那个phpize脚本。

Phpize脚本是什么?

这里提及一下:

Phpize可以理解为侦察环境的作用。phpize工具会根据你已经安装的php的配置情况生成对应的configure文件。

执行这个命令后可能会提示没有安装 autoconf这个程序,如果这样你就要安装好这个软件再来运行这个命令。

我这里是没有问题的:

test.jsp?url=http%3A%2F%2Fwww.programfish.com%2Fblog%2Fwp-content%2Fuploads%2F2014%2F10%2Fimage61.jpg&refer=http%3A%2F%2Fwww.cnblogs.com%2Fprogramfish%2Fp%2F4096206.html

Phpize 运行没有问题后就用 ./configure –with-php-config=/php/bin/php-config

这里/php/bin/php-config要换成你的Php安装目录。比如是/usr/local/aaa那么你就搭成/usr/local/aaa/bin/php-config

执行这步后如果没有报错就执行make 命令。

test.jsp?url=http%3A%2F%2Fwww.programfish.com%2Fblog%2Fwp-content%2Fuploads%2F2014%2F10%2Fimage71.jpg&refer=http%3A%2F%2Fwww.cnblogs.com%2Fprogramfish%2Fp%2F4096206.html

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

test.jsp?url=http%3A%2F%2Fwww.programfish.com%2Fblog%2Fwp-content%2Fuploads%2F2014%2F10%2Fimage81.jpg&refer=http%3A%2F%2Fwww.cnblogs.com%2Fprogramfish%2Fp%2F4096206.html

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

test.jsp?url=http%3A%2F%2Fwww.programfish.com%2Fblog%2Fwp-content%2Fuploads%2F2014%2F10%2Fimage91.jpg&refer=http%3A%2F%2Fwww.cnblogs.com%2Fprogramfish%2Fp%2F4096206.html

此时可以用sudo执行make install 命令或者直接切换到root用户下执行,执行时需要输入你的密码。

Make install安装成功后还要干两件事:

其一是: 在php.ini的配置文件里加上一句:

test.jsp?url=http%3A%2F%2Fwww.programfish.com%2Fblog%2Fwp-content%2Fuploads%2F2014%2F10%2Fimage101.jpg&refer=http%3A%2F%2Fwww.cnblogs.com%2Fprogramfish%2Fp%2F4096206.html

extension=mysql.so

这里假设是编译mysql模块,如果是其它就其它模块名.

比如:

test.jsp?url=http%3A%2F%2Fwww.programfish.com%2Fblog%2Fwp-content%2Fuploads%2F2014%2F10%2Fimage111.jpg&refer=http%3A%2F%2Fwww.cnblogs.com%2Fprogramfish%2Fp%2F4096206.html

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

test.jsp?url=http%3A%2F%2Fwww.programfish.com%2Fblog%2Fwp-content%2Fuploads%2F2014%2F10%2Fimage12.jpg&refer=http%3A%2F%2Fwww.cnblogs.com%2Fprogramfish%2Fp%2F4096206.html

我这里已经编译安装了4个模块。

第二件事就是重启下你的apache。(如果你安装的是apache提供web服务的)

欢迎访问本人网站:http://www.programfish.com

LinuxCoder 社区: http://linuxcoder.org

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值