天天看點

CentOS 7 編譯安裝PHP7

說明:非常感謝《 2015部落格更新記(五):CentOS 7.1編譯安裝PHP7 》的部落客vfhky

環境說明

  1. VMware 12 中搭建的CentOS 7 x64 4核 2G記憶體
  2. 環境中已經安裝了 http://blog.csdn.net/u014595668/article/details/50166277 中編譯安裝的MySQL5.7.9

工具下載下傳

編譯環境:

libmcrypt2.5.7下載下傳

mhash-0.9.9.9下載下傳 mcrypt-2.6.8下載下傳

php安裝包:

php 7下載下傳

用xftp把所有的工具上傳到/root/目錄中

建立php使用者和使用者組

首先建立一個名為php且沒有登入權限的使用者和一個名為php的使用者組

#######建立php使用者和php組     [root@localhost ~]# groupadd -r php && useradd -r -g php -s /bin/false -d /usr/local/php7 -M php           

編譯安裝php 7所需的依賴

編譯安裝 libmcrypt, mhash, mcrypt 二進制源碼包

這裡之是以編譯安裝libmcrypt,原因是yum安裝的貌似會報錯

######編譯安裝libmcrypt-2.5.7     [root@localhost ~]# tar zxvf libmcrypt-2.5.7.tar.gz     [root@localhost ~]# cd libmcrypt-2.5.7     [root@localhost libmcrypt-2.5.7]# ./configure --prefix=/usr/local/related/libmcrypt     [root@localhost libmcrypt-2.5.7]# make && make install     [root@localhost libmcrypt-2.5.7]# cd ~     [root@localhost ~]# rm -rf libmcrypt-2.5.7*           
######編譯安裝mhash-0.9.9.9     [root@localhost ~]# tar zxf mhash-0.9.9.9.tar.gz      [root@localhost ~]# cd mhash-0.9.9.9     [root@localhost mhash-0.9.9.9]# ./configure --prefix=/usr/local/related/mhash     [root@localhost mhash-0.9.9.9]# make && make install     [root@localhost mhash-0.9.9.9]# cd ~     [root@localhost ~]# rm -rf mhash-0.9.9.9*           
######編譯安裝mcrypt-2.6.8     [root@localhost ~]# tar zxf mcrypt-2.6.8.tar.gz && cd mcrypt-2.6.8     [root@localhost mcrypt-2.6.8]# export LD_LIBRARY_PATH=/usr/local/related/libmcrypt/lib:/usr/local/related/mhash/lib     [root@localhost mcrypt-2.6.8]# export LDFLAGS="-L/usr/local/related/mhash/lib -I/usr/local/related/mhash/include/"     [root@localhost mcrypt-2.6.8]# export CFLAGS="-I/usr/local/related/mhash/include/"     [root@localhost mcrypt-2.6.8]# ./configure --prefix=/usr/local/related/mcrypt --with-libmcrypt-prefix=/usr/local/related/libmcrypt     [root@localhost mcrypt-2.6.8]# make && make install     [root@localhost mcrypt-2.6.8]# cd ~     [root@localhost ~]# rm -rf mcrypt-2.6.8*           
######其他依賴yum安裝     [root@localhost ~]# yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel           

PHP 7編譯參數的配置

注意,操作時一定要先把下面反斜杠“\”後面添加的注釋文字去掉!!!

######生成配置檔案     [root@localhost ~]# tar -zxf php-7.0.0.tar.gz && cd php-7.0.0     [root@localhost php-7.0.0]# ./buildconf --force     Forcing buildconf     Removing configure caches     buildconf: checking installation...     buildconf: autoconf version 2.69 (ok)     rebuilding configure     rebuilding main/php_config.h.in     ######開始配置     [root@localhost php-7.0.0]# ./configure \     --prefix=/usr/local/php7 \                              [PHP7安裝的根目錄]     --exec-prefix=/usr/local/php7 \     --bindir=/usr/local/php7/bin \     --sbindir=/usr/local/php7/sbin \     --includedir=/usr/local/php7/include \     --libdir=/usr/local/php7/lib/php \     --mandir=/usr/local/php7/php/man \     --with-config-file-path=/usr/local/php7/etc \           [PHP7的配置目錄]     --with-mysql-sock=/var/run/mysql/mysql.sock \           [PHP7的Unix socket通信檔案]     --with-mcrypt=/usr/include \     --with-mhash \     --with-openssl \     --with-mysql=shared,mysqlnd \                           [PHP7依賴mysql庫]                   --with-mysqli=shared,mysqlnd \                          [PHP7依賴mysql庫]     --with-pdo-mysql=shared,mysqlnd \                       [PHP7依賴mysql庫]     --with-gd \     --with-iconv \     --with-zlib \     --enable-zip \     --enable-inline-optimization \     --disable-debug \     --disable-rpath \     --enable-shared \     --enable-xml \     --enable-bcmath \     --enable-shmop \     --enable-sysvsem \     --enable-mbregex \     --enable-mbstring \     --enable-ftp \     --enable-gd-native-ttf \     --enable-pcntl \     --enable-sockets \     --with-xmlrpc \     --enable-soap \     --without-pear \     --with-gettext \     --enable-session \                                      [允許php會話session]     --with-curl \                                           [允許curl擴充]     --with-jpeg-dir \     --with-freetype-dir \     --enable-opcache \                                      [使用opcache緩存]     --enable-fpm \     --enable-fastcgi \     --with-fpm-user=nginx \                                 [php-fpm的使用者]     --with-fpm-group=nginx \                                [php-fpm的使用者組]     --without-gdbm \     --with-mcrypt=/usr/local/related/libmcrypt \            [指定libmcrypt位置]     --disable-fileinfo           

執行上面的配置指令的運作結果如下:

開始編譯安裝PHP 7

[root@localhost php-7.0.0]# make clean && make && make install           

PHP 7編譯安裝成功

選做步驟:執行make test指令進行測試

這是一個非必需的操作步驟,執行make test指令

檢視編譯成功後的PHP7安裝目錄

由于需要和MySQL進行通信,是以需要特别檢視PHP7安裝後的lib擴充庫目錄(/usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/)。需要確定至少存在mysqli.so、pdo_mysql.so這兩個動态庫檔案,如下圖所示。

[root@localhost php-7.0.0]# ls -lrt /usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/           

開始設定PHP7的配置檔案php.ini、php-fpm.conf、www.conf和php-fpm腳本

可以用編譯後的配置檔案複制到PHP7的配置目錄(/usr/local/php7/etc/),推薦使用

github中的配置

。這個配置來自《

PHP7中php.ini、php-fpm和www.conf的配置

#######方法一:直接使用編譯後未經優化處理的配置     [root@localhost php-7.0.0]# cp php.ini-production /usr/local/php7/etc/php.ini     [root@localhost php-7.0.0]# cp /root/php-7.0.0/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm     [root@localhost php-7.0.0]# cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf     [root@localhost php-7.0.0]# cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf     #######方法二:使用https://github.com/lizer2014/mylnmp/tree/master/PHP文中的配置      [root@localhost php-7.0.0]# mv ~/php.ini /usr/local/php7/etc/php.ini && mv ~/php-fpm /etc/init.d/php-fpm     [root@localhost php-7.0.0]# mv ~/php-fpm.conf /usr/local/php7/etc/php-fpm.conf && mv ~/www.conf /usr/local/php7/etc/php-fpm.d/www.conf           

注意:需要修改php.ini配置中的參數,extension_dir改為自己的

extension_dir = "/usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/"           

其中在/etc/init.d/php-fpm中在start函數的守護程序前必須有make /var/run/php-fpm指令,否則重新開機伺服器會導緻啟動失敗,nginx中配置也有這個問題

添加php的環境變量

[root@localhost php-7.0.0]# echo -e '\nexport PATH=/usr/local/php7/bin:/usr/local/php7/sbin:$PATH\n' >> /etc/profile && source /etc/profile           

設定PHP日志目錄和php-fpm程序檔案(php-fpm.sock)目錄

其中,設定php-fpm程序目錄的使用者和使用者組為nginx,并建立php會話session目錄

#######設定PHP日志目錄和php-fpm的運作程序ID檔案(php-fpm.sock)目錄     [root@localhost php-7.0.0]# groupadd -r nginx && useradd -r -g nginx -s /bin/false -M nginx     [root@localhost php-7.0.0]# mkdir -p /var/log/php-fpm/ && mkdir -p /var/run/php-fpm && cd /var/run/ && chown -R nginx:nginx php-fpm     #######修改session的目錄配置     [root@localhost run]# mkdir -p /var/lib/php/session     [root@localhost run]# chown -R nginx:nginx /var/lib/php           

設定PHP開機啟動以及測試配置檔案是否正确

######配置開機自啟動,增加到主機sysV服務     [root@localhost run]# chmod +x /etc/init.d/php-fpm     [root@localhost run]# chkconfig --add php-fpm     [root@localhost run]# chkconfig php-fpm on     ######測試PHP的配置檔案是否正确合法     [root@localhost run]# php-fpm -t     [05-Dec-2015 17:33:03] NOTICE: configuration file /usr/local/php7/etc/php-fpm.conf test is successful           

啟動php服務

在完成上面的操作後,就可以正式使用php服務了。啟動php程序服務的指令如下:

[root@localhost init.d]# service php-fpm start     Starting php-fpm  done           

然後可以通過指令ps -aux|grep php檢視是否成功(圖中的php-fpm程序數和程序使用者nginx都是由www.conf中pm.start_servers和user的值分别決定的):

檢視PHP7版本資訊

最後,可以通過指令php -v檢視目前PHP版本資訊,圖中可以看到目前PHP7還使用了Zend OPcache緩存,是因為在php.ini檔案中添加了zend_extension=opcache.so配置。

參考網址

CentOS 7.1編譯安裝PHP7 configure: error: mcrypt.h not found. Please reinstall libmcrypt