周一了,我又TM的開始碼代碼了,各種BUG各種有,讓我抓腮撓耳,我還是只適合做安靜的美男子,上次我們安裝完nginx,今天開始學(xué)習(xí)編譯安裝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作為獨立的進程來運行(默認(rèn)占據(jù)9000端口)
</pre>
執(zhí)行上面命令,我這里發(fā)現(xiàn)報錯<pre> error: xml2-config not found. Please check your libxml2 installation.</pre>
意思就是找不到libxml2,找不到我們就安裝被,這還不簡單,我們使用yum安裝
<pre>
yum install libxml2
yum install libxml2-devel -y
</pre>
執(zhí)行完上面兩條命令后,如果沒報錯我們來檢查下libxml2是否安裝
<pre>[root@localhost ~]# find / -name "xml2-config"
/usr/bin/xml2-config</pre>
顯示在usr/bin/有個xml2-config的文件
說明安裝成功 我們重新執(zhí)行上面編譯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作為獨立的進程來運行(默認(rèn)占據(jù)9000端口)
</pre>
一定是在php源碼包執(zhí)行,否則找不到該目錄,執(zhí)行完畢 又出現(xiàn)error<pre>configure: error: Cannot find OpenSSL's <evp.h></pre>
缺少OpenSSL繼續(xù)安裝
<pre>yum install openssl-devel</pre>執(zhí)行完畢,繼續(xù)編譯php ,又報錯,我尼瑪
<pre>configure: error: png.h not found.</pre>說是png.h什么玩意找不到
百度下,繼續(xù)安裝<pre>yum install libpng-devel</pre>,安裝完畢,繼續(xù)編譯php,想哭的心都有了,我想安裝個php就這么費勁么,算了 不跟他較勁
<pre>報錯:Configure: error: freetype.h not found</pre>繼續(xù)安裝<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源不存在這個包我們?nèi)Q個yum源
<pre>yum install epel-release //擴展包更新包
yum update //更新yum源
yum install libmcrypt libmcrypt-devel mcrypt mhash
</pre>上面是三條命令
完事之后繼續(xù)安裝php
提示<pre>Thank you for using PHP.</pre>,繼續(xù)<pre>make && make install</pre>,如果有報錯,就解決錯誤問題,百度是個好東西
php5.4之后php作為一個獨立的進程來運行,所以我們來啟動php,進入cd /usr/local/php5.6/目錄 里面有個sbin的文件夾,里面放的都是可執(zhí)行文件進入sbin里面發(fā)現(xiàn)有個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文件夾看看 發(fā)現(xiàn)有一個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都是獨立的程序,目前還沒有任何關(guān)系,需要我們來把他們兩個打通在,接下來就開始打通兩者,寫在下一篇文章里