周一了,我又TM的开始码代码了,各种BUG各种有,让我抓腮挠耳,我还是只适合做安静的美男子,上次我们安装完nginx,今天开始学习编译安装php,我安装的要安装的是php5.6
连接ssh后 进入下载文件目录 /home/jiaruo/Downloads
wget下载php 地址php官方有 我下载的是5.6
<pre>wget http://hk1.php.net/get/php-5.6.27.tar.gz/from/this/mirror
</pre>
下载完毕 我们用ls 命令查看 多了 个mirror文件 因为不是压缩包,我们把它重命名为php-5.6.27.tar.gz 来进行解压 <pre> mv mirror php-5.6.27.tar.gz</pre>
在ls查看 果然多了个 php-5.6.27.tar.gz的文件 然后来进行解压<pre>tar xvf php-5.6.27.tar.gz</pre>
解压完毕后 ls查看是否多了个php-5.6.27的文件夹,如果没有 请重新下载解压, 进入php-5.6.27这个文件夹 ls 查看 是否有configure 这个文件 ,有的话 开始检测
通常在php安装的时候 需要用到gd mysql mbstring 等模块,所以我们在编译的时候,先把常用的都安装上,如果以后还有需要,请重新编译
<pre>
./configure --prefix=/usr/local/php5.6
--with-gd
--with-freetype-dir
--enable-gd-native-ttf
--enable-mysqlnd
--with-pdo-mysql=mysqlnd
--with-openssl
--with-mcrypt
--enable-mbstring
--enable-zip
--enable-fpm #是让PHP作为独立的进程来运行(默认占据9000端口)
</pre>
执行上面命令,我这里发现报错<pre> error: xml2-config not found. Please check your libxml2 installation.</pre>
意思就是找不到libxml2,找不到我们就安装被,这还不简单,我们使用yum安装
<pre>
yum install libxml2
yum install libxml2-devel -y
</pre>
执行完上面两条命令后,如果没报错我们来检查下libxml2是否安装
<pre>[root@localhost ~]# find / -name "xml2-config"
/usr/bin/xml2-config</pre>
显示在usr/bin/有个xml2-config的文件
说明安装成功 我们重新执行上面编译php的命令
<pre>
./configure --prefix=/usr/local/php5.6
--with-gd
--with-freetype-dir
--enable-gd-native-ttf
--enable-mysqlnd
--with-pdo-mysql=mysqlnd
--with-openssl
--with-mcrypt
--enable-mbstring
--enable-zip
--enable-fpm #是让PHP作为独立的进程来运行(默认占据9000端口)
</pre>
一定是在php源码包执行,否则找不到该目录,执行完毕 又出现error<pre>configure: error: Cannot find OpenSSL's <evp.h></pre>
缺少OpenSSL继续安装
<pre>yum install openssl-devel</pre>执行完毕,继续编译php ,又报错,我尼玛
<pre>configure: error: png.h not found.</pre>说是png.h什么玩意找不到
百度下,继续安装<pre>yum install libpng-devel</pre>,安装完毕,继续编译php,想哭的心都有了,我想安装个php就这么费劲么,算了 不跟他较劲
<pre>报错:Configure: error: freetype.h not found</pre>继续安装<pre>yum install freetype-devel</pre>我都不想说什么了
又报错,😢<pre>configure: error: mcrypt.h not found. Please reinstall libmcrypt.</pre>
百度下<pre>yum install php-mcrypt libmcrypt libmcrypt-devel</pre>
安装提示找不到改包,说明linux自带的yum源不存在这个包我们去换个yum源
<pre>yum install epel-release //扩展包更新包
yum update //更新yum源
yum install libmcrypt libmcrypt-devel mcrypt mhash
</pre>上面是三条命令
完事之后继续安装php
提示<pre>Thank you for using PHP.</pre>,继续<pre>make && make install</pre>,如果有报错,就解决错误问题,百度是个好东西
php5.4之后php作为一个独立的进程来运行,所以我们来启动php,进入cd /usr/local/php5.6/目录 里面有个sbin的文件夹,里面放的都是可执行文件进入sbin里面发现有个php-fpm 我们直接来运行 直接报错<pre>
[23-Oct-2016 19:31:07] ERROR: failed to open configuration file '/usr/local/php5.6/etc/php-fpm.conf': No such file or directory (2)
[23-Oct-2016 19:31:07] ERROR: failed to load configuration file '/usr/local/php5.6/etc/php-fpm.conf'
[23-Oct-2016 19:31:07] ERROR: FPM initialization failed
You have new mail in /var/spool/mail/root
</pre>
就是找不到/usr/local/php5.6/etc/php-fpm.conf呗
我们进etc文件夹看看 发现有一个php-fpm.conf.default 直接copy一份试试在启动 <pre>./php-fpm </pre>没有任何信息,说明启动成功
<pre>ps aux |grep php</pre>
<pre>root 51508 0.0 0.3 169816 3968 ? Ss 19:33 0:00 php-fpm: master process (/usr/local/php5.6/etc/php-fpm.conf)
nobody 51509 0.0 0.3 169816 3520 ? S 19:33 0:00 php-fpm: pool www
nobody 51510 0.0 0.3 169816 3520 ? S 19:33 0:00 php-fpm: pool www</pre>
php进程在运行
说明php编译完毕 并且安装成功,但是nginx和php都是独立的程序,目前还没有任何关系,需要我们来把他们两个打通在,接下来就开始打通两者,写在下一篇文章里