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文件

相关文章

目录前言一、创建Hadoop用户二、更新apt和安装Vim编辑器三、...
原文连接:https://www.cnblogs.com/yasmi/p/5192694.html ...
电脑重启后,打开VirtualBox,发现一直用的虚拟机莫名的消失...
参见:https://blog.csdn.net/weixin_38883338/article/deta...
Ubuntu 18.04 LTS 已切换到 Netplan 来配置网络接口。Netpla...
介绍每个 Web 服务都可以通过特定的 URL 在 Internet 上访问...