ubuntu 16.04 编译安装php5.4

以下所有命令我都是在root下进行的,所以没有sudo


1、下载php5.4源码,http://cn2.php.net/distributions/php-5.4.45.tar.gz

2、安装必须的包

apt-get install gcc libxml2-devel make automake autoconf libtool bison flex

3、tar -zxvf php-5.4.45.tar.gz

清除原来的配置

./buildconf –force

建立新的配置

./configure --prefix=/usr/share/php5.4--with-config-file-path=/etc/php/5.4 --with-curl --with-pear --with-gd--with-jpeg-dir --with-png-dir --with-zlib --with-xpm-dir --with-freetype-dir--with-mcrypt --with-mhash --with-mysql --with-mysqli --enable-pdo--with-pdo-mysql --with-openssl --with-xmlrpc --with-xsl --with-gettext--with-fpm-user=www-data --with-fpm-group=www-data --enable-fpm --enable-exif--enable-wddx --enable-zip --enable-bcmath -with-bz2 --enable-calendar--enable-ftp --enable-mbstring --enable-soap --enable-sockets --enable-shmop--enable-dba --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-debug--enable-maintainer-zts --enable-embed

注:--prefix=为php的安装目录

编译

make

编译安装

make install

编译过程假如失败

make clean


在编译过程中缺少的一些其他的包可以通过apt-get install的方式自行安装,百度一下基本都没太大问题,

以下2个错误比较蛋疼,这里记录一下


错误 Cannot find OpenSSL's <evp.h>

安装下面包

apt-get install libxml2-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libxpm-dev libmysqlclient-dev libpq-dev libicu-dev libfreetype6-dev libldap2-dev libxslt-dev

apt-get install libssl-dev libsslcommon2-dev


错误:configure: error: libXpm.(a|so) not found.

安装下面的包

apt-get install libxpm-dev

如果还是如下错误:
configure: error: libXpm.(a|so) not found. 
不是你缺少东西了,输入如下命令帮编译程序找到相关文件!
cd /usr/lib/
64位的OS                                                                              
ln -s /usr/lib/x86_64-linux-gnu/libXpm.a                  
ln -s /usr/lib/x86_64-linux-gnu/libXpm.so                               
ln -s /usr/lib/x86_64-linux-gnu/libXpm.so.4                   
ln -s /usr/lib/x86_64-linux-gnu/libXpm.so.4.11.0                    
32位的OS
ln -s /usr/lib/i386-linux-gnu/libXpm.a   
ln -s /usr/lib/i386-linux-gnu/libXpm.so           
ln -s /usr/lib/i386-linux-gnu/libXpm.so.4 
ln -s /usr/lib/i386-linux-gnu/libXpm.so.4.11.0 


错误:cp: cannot stat `sapi/cli/php.1′: No such file or directory

重新开始,貌似是php的一个bug,https://bugs.php.net/bug.php?id=67888


安装完毕记得要把安装目录下的etc/php.ini下的文件复制到/etc/php/5.4/php.ini这里,方便以后修改配置

mkdir /etc/php/5.4
cp /usr/share/php5.4/etc/php.ini /etc/php/5.4/


我因为是和nginx一起使用,所以使用php-fpm的形式加载php,蛋疼的问题又出现一个,比如php5.4及以后的php-fpm不支持命令行的形式restart或者reload,但是发现可以通过kill -USR2的信号来实现reload,所以自己写了一个命令来实现reload

ps -ef | grep php-fpm | grep master | cut -c 9-15 | xargs kill -USR2
可以把这个命令保存在文件里执行,别忘了#!/bin/bash 并且注意添加执行权限


对于编译安装的php在安装扩展上比较蛋疼,目前php扩展有3种形式,

第一种php内置了,在编译php的时候./configure的时候带上就可以了,大家可以看php的官方文档上有介绍,具体的参数官方文档上都有

第二种通过pear或者pecl安装,pear或者pecl在php的安装目录的bin目录下,包括php-config还有phpize,php-config在安装某些扩展的时候会提示没有找到php-config文件,

可以通过--with-php-config=/usr/share/php5.4/bin/php-config 参数来执行php-config的位置,

第三种就是扩展的源码编译了,扩展的源码编译主要使用phpize,以下以xdebug为主示范一下,



下载xdebug源码:https://xdebug.org/files/xdebug-2.4.1.tgz

因为能适配php5.4的最高的xdebug只有2.4.1所以就下载2.4.1的

wget https://xdebug.org/files/xdebug-2.4.1.tgz
解压缩

tar -xvzf xdebug-2.3.2.tgz

进入源码目录

cd xdebug-2.3.2
源码解释
/usr/share/php5.4/bin/phpize
假如输出

Configuring for:
PHP Api Version:         20100412
Zend Module Api No:      20100525
Zend Extension Api No:   220100525
代表成功了

然后

./configure
这一步会提示

 Cannot find php-config. Please use --with-php-config=PATH

使用--with-php-config参数

./configure --with-php-config=/usr/share/php5.4/bin/php-config
这回一次成功

最后make 和make install

最后不要忘记修改php.ini文件

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值