大白话之:超详细讲解centos6.5如何编译安装php7以及踩坑总结

 首先我们在安装php7之前先来说明一下yum安装与 编译安装的区别。

 

 yum安装:类比于你windows里的360软件管家,我们可以看一下官方定义:

Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装

 

编译安装:类比于你windows下下载软件文件包,进行安装的一个过程,我们也来看一下编译安装的官方定义:

计算机运行的程序都是二进制的代码,那么我们所用的编程语言都是自然语言中的字符,那么就需要有一种机制来将这些转化成二进制代码

 

 

那么这两种安装方式有什么区别呢?其实两者最大的区别就在于yum安装版本是定死的,而编译安装则是你从远程自由选择最新的安装包,一般都是一个压缩文件,再进行编译。大体步骤如下:

1.下载源码压缩包:

首先我们找一个熟悉的地方,新建一个目录,一般我会选择  /home目录下 新建一个package目录,下载最新的压缩包。

[root@instance-rxy7cm58 home]# cd package
[root@instance-rxy7cm58 package]# wget -O php7.tar.gz http://cn2.php.net/get/php-7.2.5.tar.gz/from/this/mirror

2.解压压缩包:

使用tar -xvf php7.tar.gz命令来进行解压

解压后的目录结构如图

3.配置configure

然后我们去打开php的源码

会发现箭头所指的一个特别重要的文件configure,然后vi一下这个文件,发现都是shell脚本

大白话之:超详细讲解centos6.5如何编译安装php7以及踩坑总结_第1张图片

他的作用其实也很简单,就是对于源码安装进行一些配置,大家可以自行的去执行这个文件然后加上--help命令去查看都有什么命令,这里不展开讲解了。

我们来运行如下命令,代表安装到什么路径

./configure --prefix=/home/dongxue,结果报错,说明配置的时候出错了,我们安装提示的软件,

yum install libxml2-devel

 然后重新进行配置一次

看到如上说明已经配置成功。

 

4.make

配置成功以后,就可以使用make命令来进行构建了,那么何为构建呢,通俗的讲就是先编译这个,还是先编译那个(即编译的安排),叫做构建(build)。

此时又报错了:

 make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1 ,其实这是因为我们的内存过小 甚至没有到1g,只需要在配置命令中添加 --disable-fileinfo即可 

重新进行配置再make,然后提示成功.

5.make install

最后一步安装成功,打开php -v ,可以看到版本信息等提示

 

其实在上面的时候我出现了一个小问题,不知道大家发现没有,就是我后面不是又执行了一下 ./configure 吗?但是我忘记执行了--prefix命令,所以软件就自己选择安装了默认目录 /usr/local下,因为这个路径本身就是在环境变量里,所以我们可以直接使用php -v来执行,而没有自己来进行配置到环境变量简化,那么如何自行配置到环境变量里呢?

你需要找到你的用户目录,找到一个文件进行编辑  vi ~/.bash_profile,例如/home/work/study/soft/php/bin/php目录是你安装的目录,那么你可以进行简化。

 

大白话之:超详细讲解centos6.5如何编译安装php7以及踩坑总结_第2张图片简化完环境变量没有生效。

使用source命令来执行这个文件。 

 

除了上面的坑,还有一些地方需要注意一下:

1.系统中必须安装gcc编译器,来编译c语言为机器码

2.此时你会产生一个疑问?phpini文件在哪里呢?没有这个文件我咋进行php的配置啊,我们执行一个命令会看到提示php需要我们把ini文件放到哪里去? 命令是:php -i |grep php.ini 

好了,得到目录需要放到的path

那么原始的phpini在哪里呢?其实是存在与下载安装包的源码里 我们使用cp命令进行拷贝,因为原文件不叫init,所以先改名,再移动 ,源文件里名字叫做:php.ini-development   php.ini-production,一个是开发环境,一个是生成环境。移动到指定目录就可以了。

 

 

 

 

你可能感兴趣的:(php)