ubuntu php 源码编译安装mysql_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

安装下面包

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

你可能感兴趣的:(ubuntu,php,源码编译安装mysql)