1. 程式人生 > >centos7上編譯安裝php7,以php-fpm方式連線apache

centos7上編譯安裝php7,以php-fpm方式連線apache

好幾個月之間其實已經配置過LAMP LNMP等等一些配置,以前配置都是按照晚上抄的,基本都能配置出來,現重頭學想自己配置下,但是發現好多配置都忘了 ,中間踩了幾個坑,記錄下,也更徹底的學習下.....

./configure --prefix=/usr/local/php7
--enable-fpm 以fpm模式安裝,這個還可以改成 --with-apxs2=PATH模式,兩者只能取其一
--enable-so
--with-config-file-path=/etc 只能配置檔案位置
--with-config-file-scan-dir=/etc/php.d 可以讀取這個目錄下的配合檔案
--with-openssl
--with-linxml-dir
--with-bz2
--with-curl
--with-pcre-dir
--with-gd
--with-jpeg-dir
--with-png-dir
--with-zlib-dir
--with-mcrypt
--with-mysql=/usr/local/mysql 這個選項是多餘的,不生效,在php7中有其內建的mysql模組了 不用依賴於mysql或mariadb,所以說php安裝順序放在那裡都行
--with-mysqli
--with-mysql-sock
--with-pdo-mysql
--enable-sockets

這次編譯的呢是php獨立模式的,不是作為apache模組形式執行的,所有就開啟了 --enable-fpm,這樣的好處是php可以獨立與任何一臺機器執行

但是,上面的引數並不是完整的,有很多的引數沒新增上。。
遇到的問題是,在使用phpMyadmin的時候
centos7上編譯安裝php7,以php-fpm方式連線apache

然後就開始在網上搜啊搜的,找了好多也沒解決,不能說網上的方法不對,只是安裝方式不同而已,網上的方法大部分是這樣的
centos7上編譯安裝php7,以php-fpm方式連線apache

或者是這樣的
centos7上編譯安裝php7,以php-fpm方式連線apache

但是我的都不是這樣的,以上說的可能是直接yum安裝的php,具體我的為什麼出現這種情況 還需要看 ./configure的選項了,因為我沒有 開啟
---enable-mbstring Enable multibyte string support
所有就會出現這樣的問題,解決方案,動態編譯mbstrin

 cd /root/pakger/php-7.1.23/ext/mbstring/
 /usr/local/php7/bin/phpize 
./configure --with-php-config=/usr/local/php7/bin/php-config
make && make install
cd /usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/

也就這幾部,首先cd 到php的源目錄中的/ext/mbstring中
然後執行 /usr/local/php7/bin/phpize 會生成一個configure的檔案
最後直接使用期編譯安裝到上面指定的位置即可,編譯安裝完以後會出現此模組的路徑 ×××路徑到php.ini中 如下圖:
centos7上編譯安裝php7,以php-fpm方式連線apache


據對路徑方式....
然後重啟php-fpm即可,當然想要和apache連線上還需要配置apachere配置檔案
因為這裡是以fpm形式安裝的,所以和模組形式的配置是不一樣的,除了新增
centos7上編譯安裝php7,以php-fpm方式連線apache
以外 還需要新增
centos7上編譯安裝php7,以php-fpm方式連線apache
以上兩行,大概意思是讓php請求的頁面都走這個路徑。。。
而以模組形式安裝php的應配置為
centos7上編譯安裝php7,以php-fpm方式連線apache

到此基本就完事了,然後就是配置一下php的配置檔案之類的...

<?php
phpinfo();
$link = mysql_connect("localhost","user","passwd");
if (!$link) echo "FAILD";
else echo "ok";

    phpinfo();

?>
通用二進位制安裝包安裝mariadb出了幾次錯誤,索性就編譯安裝了,但是。。真的挺慢的.......

其中用到了 mysql中的data專門放到一個目錄或分割槽上
需要用到磁碟分割槽知識,然後使用初始化指令碼來指定data的位置
然後設定mysql開機啟動 把服務指令碼新增到init.d目錄下等