1. 程式人生 > >CentOS7.3編譯安裝PHP7.1

CentOS7.3編譯安裝PHP7.1

CentOS7.3編譯安裝PHP7.1

    • 說明
    • 安裝依賴包
    • 建立使用者及使用者組
    • 下載php71並解壓
    • 下載並安裝php依賴
      • PHP語法分析器re2c
      • 加密支援擴充套件庫libmcrypt
      • 加密方式擴充套件庫mhash
      • 加密方式擴充套件庫mcrypt
    • 編譯php71
      • 檢視原始碼目錄檔案具體內容
      • 生成php原始碼目錄下的配置檔案 configure
      • 生成原始碼目錄配置檔案 configure 之後的目錄
      • 正式編譯php71
      • 可能會出現要求開啟 --enable-opcacheon 的錯誤提示
      • 執行 make test
      • 編譯安裝後的php目錄
    • 配置php
      • 修改php配置檔案之新增php配置檔案
      • 修改php配置檔案之修改php擴充套件目錄所在位置
      • 修改php配置檔案之修改伺服器所在時區
      • 修改php配置檔案之開啟OPcache
      • 修改php配置檔案之開啟 mysqli 擴充套件
      • 新增 php-fpm 管理相關的配置檔案到系統配置目錄 etcinitd
      • 新增 php-fpm 配置檔案
      • 新增 wwwconf 配置檔案
      • 新增php安裝目錄到系統環境變數
      • 設定PHP日誌目錄和php-fpm執行程序的ID檔案目錄
      • 修改session的目錄配置
      • 設定php開機啟動
      • 檢測 php-fpm 系統服務是否啟動成功
      • 測試PHP的配置檔案是否無誤
      • 啟動php系統服務
      • 檢視php系統服務狀態
      • CLI檢視php版本資訊
      • 修改nginx配置檔案使之使用nginx反向php直譯器
      • 瀏覽器訪問

說明

安裝LNMP環境一般是先安裝mysql/mariadb, 再安裝nginx, 其次是安裝php

安裝依賴包

[[email protected] ~]# yum -y install gcc
[[email protected] ~]# yum -y install gcc++
[[email protected]
~]# yum -y install gcc-c++ [[email protected] ~]# yum -y install wget [[email protected] ~]# yum -y install make [[email protected] ~]# yum -y install libxml2 [[email protected] ~]# yum -y install libxml2-devel [[email protected] ~]# yum -y install openssl [[email protected] ~]# yum -y install openssl-devel [[email protected] ~]# yum -y install curl-devel [[email protected] ~]# yum -y install libjpeg-devel [[email protected] ~]# yum -y install libpng-devel [[email protected] ~]# yum -y install freetype-devel [[email protected] ~]# yum -y install bison [[email protected] ~]# yum -y install autoconf

建立使用者及使用者組

  • 建立php使用者組
> 建立php使用者組(-r選項是建立一個系統使用者組的意思)

[[email protected] ~]# groupadd -r php
  • 建立使用者並加入到php系統使用者組
> 新增新使用者

> -r: 新增系統使用者( 這裡指將要被建立的系統使用者php )

> -g: 指定要建立的使用者所屬組( 這裡指新增到新系統使用者php到php系統使用者組 )

> -s: 新帳戶的登入shell( `/sbin/nologin` 這裡設定為將要被建立系統使用者php不能用來登入系統 )

> -d: 新帳戶的主目錄( 這裡指定將要被建立的系統使用者php的家目錄為 `/usr/local/php` )

> -M: 不要建立使用者的主目錄( 也就是說將要被建立的系統使用者php不會在 `/home` 目錄下建立 `php` 家目錄 )

[[email protected] ~]# useradd -r -g php -s /sbin/nologin -d /usr/local/php -M php

下載php7.1並解壓

> 下載

[[email protected] ~]# wget -c https://github.com/php/php-src/archive/php-7.1.6.tar.gz

> 解壓

[[email protected] ~]# tar -zxvf php-7.1.6.tar.gz

下載並安裝php依賴

PHP語法分析器re2c

> 下載

[[email protected] ~]# wget -c https://github.com/skvadrik/re2c/releases/download/0.16/re2c-0.16.tar.gz

> 解壓

[[email protected] ~]# tar -zxvf re2c-0.16.tar.gz

> 進入解壓後的原始碼目錄編譯並安裝

[[email protected] ~]# cd re2c-0.16

[[email protected] re2c-0.16]# ./configure

[[email protected] re2c-0.16]# make && make install

加密支援擴充套件庫libmcrypt

使用php mcrypt 前必須先安裝Libmcrypt

> 下載

[[email protected] ~]# wget -c https://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz

> 解壓

[[email protected] ~]# tar -zxvf libmcrypt-2.5.8.tar.gz

> 進入解壓後的原始碼目錄編譯並安裝

[[email protected] ~]# cd libmcrypt-2.5.8

[[email protected] libmcrypt-2.5.8]# ./configure

[[email protected] libmcrypt-2.5.8]# # make && make install

加密方式擴充套件庫mhash

> 下載

[[email protected] ~]# wget -c https://downloads.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz

> 解壓

[[email protected] ~]# tar -zxvf mhash-0.9.9.9.tar.gz

> 進入解壓後的原始碼目錄編譯並安裝

[[email protected] mhash-0.9.9.9]# cd mhash-0.9.9.9

[[email protected] mhash-0.9.9.9]# ./configure

[[email protected] mhash-0.9.9.9]# make && make install

加密方式擴充套件庫mcrypt

> 下載

[[email protected] ~]# wget -c https://sourceforge.net/projects/mcrypt/files/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz

> 解壓

[[email protected] ~]# tar -zxvf mcrypt-2.6.8.tar.gz 

> 由於在編譯mcrypt時,會找不到libmcrypt的連結庫,導致無法編譯,因為Libmcrypt的連結庫在/usr/local/lib資料夾下

> 所以,在編譯mcrypt時要加入LD_LIBRARY_PATH=/usr/local/lib匯入間接庫

> 進入解壓後的原始碼目錄編譯並安裝

[[email protected] ~# cd mcrypt-2.6.8

[[email protected] mcrypt-2.6.8]# ./configure LD_LIBRARY_PATH=/usr/local/lib

[[email protected] mcrypt-2.6.8]# make && make install

編譯php7.1

到目錄為止所有的準備工作已經完成, 接下來就是編譯php7.1了!

檢視原始碼目錄檔案具體內容

[[email protected] php-src-php-7.1.6]# ll
total 1252
-rw-rw-r--.  1 root root  82506 Jun  7 04:05 acinclude.m4
drwxrwxr-x.  2 root root     78 Jun  7 04:05 appveyor
drwxrwxr-x.  2 root root   4096 Jun  7 04:05 build
-rwxrwxr-x.  1 root root    772 Jun  7 04:05 buildconf
-rw-rw-r--.  1 root root    334 Jun  7 04:05 buildconf.bat
-rw-rw-r--.  1 root root  11982 Jun  7 04:05 CODING_STANDARDS
-rw-rw-r--.  1 root root  42938 Jun  7 04:05 config.guess
-rw-rw-r--.  1 root root  35987 Jun  7 04:05 config.sub
-rw-rw-r--.  1 root root  46774 Jun  7 04:05 configure.in
-rw-rw-r--.  1 root root   3163 Jun  7 04:05 CONTRIBUTING.md
-rw-rw-r--.  1 root root     91 Jun  7 04:05 CREDITS
drwxrwxr-x. 75 root root   4096 Jun  7 04:05 ext
-rw-rw-r--.  1 root root  20917 Jun  7 04:05 EXTENSIONS
-rw-rw-r--.  1 root root    137 Jun  7 04:05 footer
-rwxrwxr-x.  1 root root    581 Jun  7 04:05 genfiles
-rw-rw-r--.  1 root root   1143 Jun  7 04:05 header
-rw-rw-r--.  1 root root  87836 Jun  7 04:05 INSTALL
-rw-rw-r--.  1 root root   3218 Jun  7 04:05 LICENSE
-rw-rw-r--.  1 root root 199728 Jun  7 04:05 ltmain.sh
drwxrwxr-x.  3 root root   4096 Jun  7 04:05 main
-rwxrwxr-x.  1 root root   4129 Jun  7 04:05 makedist
-rw-rw-r--.  1 root root   1088 Jun  7 04:05 Makefile.frag
-rw-rw-r--.  1 root root   2485 Jun  7 04:05 Makefile.gcov
-rw-rw-r--.  1 root root   7236 Jun  7 04:05 Makefile.global
-rw-rw-r--.  1 root root   5317 Jun  7 04:05 makerpm
drwxrwxr-x.  2 root root     40 Jun  7 04:05 netware
-rw-rw-r--.  1 root root 135093 Jun  7 04:05 NEWS
drwxrwxr-x.  2 root root     65 Jun  7 04:05 pear
-rw-rw-r--.  1 root root   1489 Jun  7 04:05 php.spec.in
-rw-rw-r--.  1 root root   2523 Jun  7 04:05 php.gif
-rw-rw-r--.  1 root root  71064 Jun  7 04:05 php.ini-development
-rw-rw-r--.  1 root root  71096 Jun  7 04:05 php.ini-production
-rw-rw-r--.  1 root root   7010 Jun  7 04:05 README.EXT_SKEL
-rw-rw-r--.  1 root root   5026 Jun  7 04:05 README.GIT-RULES
-rw-rw-r--.  1 root root   5417 Jun  7 04:05 README.input_filter
-rw-rw-r--.  1 root root   3426 Jun  7 04:05 README.MAILINGLIST_RULES
-rw-rw-r--.  1 root root   1608 Jun  7 04:05 README.md
-rw-rw-r--.  1 root root   6040 Jun  7 04:05 README.namespaces
-rw-rw-r--.  1 root root   5237 Jun  7 04:05 README.NEW-OUTPUT-API
-rw-rw-r--.  1 root root   7528 Jun  7 04:05 README.PARAMETER_PARSING_API
-rw-rw-r--.  1 root root  19766 Jun  7 04:05 README.REDIST.BINS
-rw-rw-r--.  1 root root  12934 Jun  7 04:05 README.RELEASE_PROCESS
-rw-rw-r--.  1 root root   5086 Jun  7 04:05 README.SELF-CONTAINED-EXTENSIONS
-rw-rw-r--.  1 root root  15355 Jun  7 04:05 README.STREAMS
-rw-rw-r--.  1 root root   8126 Jun  7 04:05 README.SUBMITTING_PATCH
-rw-rw-r--.  1 root root   6695 Jun  7 04:05 README.TESTING
-rw-rw-r--.  1 root root   4958 Jun  7 04:05 README.TESTING2
-rw-rw-r--.  1 root root   4261 Jun  7 04:05 README.UNIX-BUILD-SYSTEM
-rw-rw-r--.  1 root root    109 Jun  7 04:05 README.WIN32-BUILD-SYSTEM
-rwxrwxr-x.  1 root root  82234 Jun  7 04:05 run-tests.php
drwxrwxr-x. 10 root root   4096 Jun  7 04:05 sapi
drwxrwxr-x.  4 root root     99 Jun  7 04:05 scripts
-rwxrwxr-x.  1 root root   2104 Jun  7 04:05 server-tests-config.php
-rwxrwxr-x.  1 root root  52726 Jun  7 04:05 server-tests.php
-rwxrwxr-x.  1 root root    108 Jun  7 04:05 snapshot
-rw-rw-r--.  1 root root     10 Jun  7 04:05 stamp-h.in
-rw-rw-r--.  1 root root      1 Jun  7 04:05 stub.c
drwxrwxr-x. 10 root root   4096 Jun  7 04:05 tests
drwxrwxr-x.  3 root root     33 Jun  7 04:05 travis
drwxrwxr-x.  3 root root   4096 Jun  7 04:05 TSRM
-rw-rw-r--.  1 root root  23356 Jun  7 04:05 UPGRADING
-rw-rw-r--.  1 root root   3418 Jun  7 04:05 UPGRADING.INTERNALS
-rwxrwxr-x.  1 root root    159 Jun  7 04:05 vcsclean
drwxrwxr-x.  3 root root   4096 Jun  7 04:05 win32
drwxrwxr-x.  4 root root   4096 Jun  7 04:05 Zend

可以發現目錄中並沒有 configure 檔案, 但是有一個名為 buildconf 的檔案,

嗯, 是它就是它, 我們要通過執行這個檔案生成 configure 檔案

生成php原始碼目錄下的配置檔案 configure

> 執行 `buildconf` 檔案, 生成 `configure` 檔案

[[email protected] php-src-php-7.1.6]# ./buildconf 
You should not run buildconf in a release package.
use buildconf --force to override this check.

> 很不幸運, 並沒有成功, 並且提示:

You should not run buildconf in a release package.  # 你不應該在釋出包執行buildconf檔案。

use buildconf --force to override this check.   # 使用buildconf檔案重寫此檢查。


> 那就根據它的要求加入 `--force` 選項重寫檢查

[[email protected] php-src-php-7.1.6]# ./buildconf --force
Forcing buildconf
Removing configure caches
buildconf: checking installation...
buildconf: autoconf version 2.69 (ok)
rebuilding aclocal.m4
rebuilding configure
rebuilding main/php_config.h.in

> 這次可算是buildconf檔案重寫檢查成功了, 看一下原始碼目錄有沒有 `configure` 檔案

生成原始碼目錄配置檔案 configure 之後的目錄

[[email protected] php-src-php-7.1.6]# ll
total 4260
-rw-rw-r--.  1 root root   82506 Jun  7 04:05 acinclude.m4
-rw-r--r--.  1 root root  312883 Jun 18 04:43 aclocal.m4
drwxrwxr-x.  2 root root      78 Jun  7 04:05 appveyor
drwxr-xr-x.  2 root root      51 Jun 18 04:43 autom4te.cache
drwxrwxr-x.  2 root root    4096 Jun  7 04:05 build
-rwxrwxr-x.  1 root root     772 Jun  7 04:05 buildconf
-rw-rw-r--.  1 root root     334 Jun  7 04:05 buildconf.bat
-rw-r--r--.  1 root root       0 Jun 18 04:43 buildmk.stamp
-rw-rw-r--.  1 root root   11982 Jun  7 04:05 CODING_STANDARDS
-rw-rw-r--.  1 root root   42938 Jun  7 04:05 config.guess
-rw-rw-r--.  1 root root   35987 Jun  7 04:05 config.sub
-rwxr-xr-x.  1 root root 2758685 Jun 18 04:43 configure
-rw-rw-r--.  1 root root   46774 Jun  7 04:05 configure.in
-rw-rw-r--.  1 root root    3163 Jun  7 04:05 CONTRIBUTING.md
-rw-rw-r--.  1 root root      91 Jun  7 04:05 CREDITS
drwxrwxr-x. 75 root root    4096 Jun  7 04:05 ext
-rw-rw-r--.  1 root root   20917 Jun  7 04:05 EXTENSIONS
-rw-rw-r--.  1 root root     137 Jun  7 04:05 footer
-rw-r--r--.  1 root root    1776 Jun 18 04:43 generated_lists
-rwxrwxr-x.  1 root root     581 Jun  7 04:05 genfiles
-rw-rw-r--.  1 root root    1143 Jun  7 04:05 header
-rw-rw-r--.  1 root root   87836 Jun  7 04:05 INSTALL
-rw-r--r--.  1 root root       0 Jun 18 04:43 install-sh
-rw-rw-r--.  1 root root    3218 Jun  7 04:05 LICENSE
-rw-rw-r--.  1 root root  199728 Jun  7 04:05 ltmain.sh
drwxrwxr-x.  3 root root    4096 Jun 18 04:43 main
-rwxrwxr-x.  1 root root    4129 Jun  7 04:05 makedist
-rw-rw-r--.  1 root root    1088 Jun  7 04:05 Makefile.frag
-rw-rw-r--.  1 root root    2485 Jun  7 04:05 Makefile.gcov
-rw-rw-r--.  1 root root    7236 Jun  7 04:05 Makefile.global
-rw-rw-r--.  1 root root    5317 Jun  7 04:05 makerpm
-rw-r--r--.  1 root root       0 Jun 18 04:43 missing
-rw-r--r--.  1 root root       0 Jun 18 04:43 mkinstalldirs
drwxrwxr-x.  2 root root      40 Jun  7 04:05 netware
-rw-rw-r--.  1 root root  135093 Jun  7 04:05 NEWS
drwxrwxr-x.  2 root root      65 Jun  7 04:05 pear
-rw-rw-r--.  1 root root    1489 Jun  7 04:05 php7.spec.in
-rw-rw-r--.  1 root root    2523 Jun  7 04:05 php.gif
-rw-rw-r--.  1 root root   71064 Jun  7 04:05 php.ini-development
-rw-rw-r--.  1 root root   71096 Jun  7 04:05 php.ini-production
-rw-rw-r--.  1 root root    7010 Jun  7 04:05 README.EXT_SKEL
-rw-rw-r--.  1 root root    5026 Jun  7 04:05 README.GIT-RULES
-rw-rw-r--.  1 root root    5417 Jun  7 04:05 README.input_filter
-rw-rw-r--.  1 root root    3426 Jun  7 04:05 README.MAILINGLIST_RULES
-rw-rw-r--.  1 root root    1608 Jun  7 04:05 README.md
-rw-rw-r--.  1 root root    6040 Jun  7 04:05 README.namespaces
-rw-rw-r--.  1 root root    5237 Jun  7 04:05 README.NEW-OUTPUT-API
-rw-rw-r--.  1 root root    7528 Jun  7 04:05 README.PARAMETER_PARSING_API
-rw-rw-r--.  1 root root   19766 Jun  7 04:05 README.REDIST.BINS
-rw-rw-r--.  1 root root   12934 Jun  7 04:05 README.RELEASE_PROCESS
-rw-rw-r--.  1 root root    5086 Jun  7 04:05 README.SELF-CONTAINED-EXTENSIONS
-rw-rw-r--.  1 root root   15355 Jun  7 04:05 README.STREAMS
-rw-rw-r--.  1 root root    8126 Jun  7 04:05 README.SUBMITTING_PATCH
-rw-rw-r--.  1 root root    6695 Jun  7 04:05 README.TESTING
-rw-rw-r--.  1 root root    4958 Jun  7 04:05 README.TESTING2
-rw-rw-r--.  1 root root    4261 Jun  7 04:05 README.UNIX-BUILD-SYSTEM
-rw-rw-r--.  1 root root     109 Jun  7 04:05 README.WIN32-BUILD-SYSTEM
-rwxrwxr-x.  1 root root   82234 Jun  7 04:05 run-tests.php
drwxrwxr-x. 10 root root    4096 Jun  7 04:05 sapi
drwxrwxr-x.  4 root root      99 Jun  7 04:05 scripts
-rwxrwxr-x.  1 root root    2104 Jun  7 04:05 server-tests-config.php
-rwxrwxr-x.  1 root root   52726 Jun  7 04:05 server-tests.php
-rwxrwxr-x.  1 root root     108 Jun  7 04:05 snapshot
-rw-rw-r--.  1 root root      10 Jun  7 04:05 stamp-h.in
-rw-rw-r--.  1 root root       1 Jun  7 04:05 stub.c
drwxrwxr-x. 10 root root    4096 Jun  7 04:05 tests
drwxrwxr-x.  3 root root      33 Jun  7 04:05 travis
drwxrwxr-x.  3 root root    4096 Jun  7 04:05 TSRM
-rw-rw-r--.  1 root root   23356 Jun  7 04:05 UPGRADING
-rw-rw-r--.  1 root root    3418 Jun  7 04:05 UPGRADING.INTERNALS
-rwxrwxr-x.  1 root root     159 Jun  7 04:05 vcsclean
drwxrwxr-x.  3 root root    4096 Jun  7 04:05 win32
drwxrwxr-x.  4 root root    4096 Jun  7 04:05 Zend

現在原始碼目錄也就存在 configure 檔案了

正式編譯php7.1

如果使用此編譯選項列表, 請將 \ 反斜線後面的註釋去除, 並且後面不能有空白字元

[[email protected] php-src-php-7.1.6]# ./configure \
--prefix=/usr/local/php \                               [php安裝的根目錄]
--exec-prefix=/usr/local/php \                          [php執行檔案所在目錄]
--bindir=/usr/local/php/bin \                           [php/bin目錄]
--sbindir=/usr/local/php/sbin \                         [php/sbin目錄]
--includedir=/usr/local/php/include \                   [php包含檔案所在目錄]
--libdir=/usr/local/php/lib/php \                       [php/lib目錄]
--mandir=/usr/local/php/php/man \                       [php/man目錄]
--with-config-file-path=/usr/local/php/etc \            [php的配置目錄]
--with-mysql-sock=/var/run/mysql/mysql.sock \           [php的Unix socket通訊檔案]
--with-mcrypt \                                         [是php裡面重要的加密支援擴充套件庫,linux環境下該庫在預設情況下不開啟]
--with-mhash \                                          [Mhash是基於離散數學原理的不可逆向的php加密方式擴充套件庫,其在預設情況下不開啟]
--with-openssl \                                        [OpenSSL 是一個安全套接字層密碼庫]
--with-mysqli=shared,mysqlnd \                          [php依賴mysql庫]
--with-pdo-mysql=shared,mysqlnd \                       [php依賴mysql庫]
--with-gd \                                             [gd庫]                                               
--with-iconv \                                          [關閉iconv函式,種字符集間的轉換]                        
--with-zlib \                                           [zlib是提供資料壓縮用的函式庫]
--enable-zip \                                          [開啟對zip的支援]
--enable-inline-optimization \                          [優化執行緒]
--disable-debug \                                       [關閉除錯模式]
--disable-rpath \                                       [關閉額外的執行庫檔案]
--enable-shared \                                       [啟用動態庫]
--enable-xml \                                          [開啟xml擴充套件]
--enable-bcmath \                                       [開啟圖片大小調整,用到zabbix監控的時候用到了這個模組]
--enable-shmop \                                        [共享記憶體]
--enable-sysvsem \                                      [記憶體共享方案]
--enable-mbregex \                                      [開啟多位元組正則表示式的字元編碼。]
--enable-mbstring \                                     [開啟多位元組字串函式]
--enable-ftp \                                          [開啟ftp]
--enable-gd-native-ttf \                                [開啟gd庫原有字型]
--enable-pcntl \                                        [PHP的程序控制支援實現了Unix方式的多程序建立]     
--enable-sockets \                                      [開啟套節字]
--with-xmlrpc \                                         [開啟xml-rpc的c語言]
--enable-soap \                                         [開啟簡單物件訪問協議簡單物件訪問協議]
--without-pear \                                        [開啟php擴充套件與應用庫]
--with-gettext \                                        [開戶php在當前域中查詢訊息]
--enable-session \                                      [允許php會話session]
--with-curl \                                           [允許curl擴充套件]
--with-jpeg-dir \                                       [指定jpeg安裝目錄yum安裝過後不用再次指定會自動找到]
--with-freetype-dir \                                   [指定freetype安裝目錄yum安裝過後不用再次指定會自動找到]
--enable-opcache \                                      [開啟使用opcache快取]
--enable-fpm \                                          [開啟fpm]
--with-fpm-user=nginx \                                 [php-fpm的使用者]
--with-fpm-group=nginx \                                [php-fpm的使用者組]
--without-gdbm \                                        [資料庫函式使用可擴充套件雜湊和類似於標準UNIX dbm的工作]
--enable-fast-install \                                 [為快速安裝優化]
--disable-fileinfo

最終的 ./configure

./configure --prefix=/usr/local/php  --exec-prefix=/usr/local/php --bindir=/usr/local/php/bin --sbindir=/usr/local/php/sbin --includedir=/usr/local/php/include --libdir=/usr/local/php/lib/php --mandir=/usr/local/php/php/man --with-config-file-path=/usr/local/php/etc --with-mysql-sock=/var/run/mysql/mysql.sock --with-mcrypt --with-mhash --with-openssl --with-mysqli=shared,mysqlnd --with-pdo-mysql=shared,mysqlnd --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 --with-curl --with-jpeg-dir --with-freetype-dir --enable-opcache --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --without-gdbm --enable-fast-install --disable-fileinfo

可能會出現要求開啟 --enable-opcache=on 的錯誤提示

> 錯誤提示

configure: error: Don't know how to define struct flock on this system, set --enable-opcache=no

> 解決辦法

編輯/etc/ld.so.conf

加入/usr/local/lib

執行ldconfig,使其重新載入一次

執行 make test

這一步不是必須的, 如果要執行可能會讓你等很長一段時間

  • 執行
[[email protected] php-src-php-7.1.6]# make && make install
  • 結果
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/
Installing PHP CLI binary:        /usr/local/php/bin/
Installing PHP CLI man page:      /usr/local/php/php/man/man1/
Installing PHP FPM binary:        /usr/local/php/sbin/
Installing PHP FPM defconfig:     /usr/local/php/etc/
Installing PHP FPM man page:      /usr/local/php/php/man/man8/
Installing PHP FPM status page:   /usr/local/php/php/php/fpm/
Installing phpdbg binary:         /usr/local/php/bin/
Installing phpdbg man page:       /usr/local/php/php/man/man1/
Installing PHP CGI binary:        /usr/local/php/bin/
Installing PHP CGI man page:      /usr/local/php/php/man/man1/
Installing build environment:     /usr/local/php/lib/php/build/
Installing header files:          /usr/local/php/include/php/
Installing helper programs:       /usr/local/php/bin/
  program: phpize
  program: php-config
Installing man pages:             /usr/local/php/php/man/man1/
  page: phpize.1
  page: php-config.1
/home/packages/php/php-src-php-7.1.6/build/shtool install -c ext/phar/phar.phar /usr/local/php/bin
ln -s -f phar.phar /usr/local/php/bin/phar
Installing PDO headers:           /usr/local/php/include/php/ext/pdo/

出現這個結果 編譯 也就完成了!

編譯安裝後的php目錄

[[email protected] php-src-php-7.1.6]# ll /usr/local/php
total 0
drwxr-xr-x. 2 root root 100 Jun 18 05:57 bin
drwxr-xr-x. 3 root root  49 Jun 18 05:57 etc
drwxr-xr-x. 3 root root  16 Jun 18 05:57 include
drwxr-xr-x. 3 root root  16 Jun 18 05:57 lib
drwxr-xr-x. 4 root root  26 Jun 18 05:57 php
drwxr-xr-x. 2 root root  20 Jun 18 05:57 sbin
drwxr-xr-x. 4 root root  26 Jun 18 05:57 var

配置php

修改php配置檔案之新增php配置檔案

> 將php原始碼編譯目錄下的 `php.ini-production` 拷貝到php安裝目錄下的 `etc` 目錄下

[[email protected] php-src-php-7.1.6]# cp php.ini-production /usr/local/php/etc/php.ini

修改php配置檔案之修改php擴充套件目錄所在位置

> 修改 `php.ini` 配置檔案, 設定php擴充套件安裝目錄所在位置

[[email protected] php-src-php-7.1.6]# vim /usr/local/php/etc/php.ini

> 找到 `extension_dir` 修改擴充套件目錄位置如下:

extension_dir = "../lib/php/extensions/no-debug-non-zts-20160303/"

> 上面寫的擴充套件目錄位置是使用的 `相對路徑` 當然你也可以使用 `絕對路徑` 如:

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

修改php配置檔案之修改伺服器所在時區

> 修改 `php.ini` 配置檔案, 設定php所安裝伺服器時區

[[email protected] php-src-php-7.1.6]#  vim /usr/local/php/etc/php.ini

> 找到 `timezone` 修改時區如下:

date.timezone = PRC

> PRC就是英文People's Republic of China, 這個你應該知道的吧! 中華人民共和國

修改php配置檔案之開啟OPcache

> 修改 `php.ini` 配置檔案, 開啟OPcache

[[email protected] php-src-php-7.1.6]#  vim /usr/local/php/etc/php.ini

> 跳轉到檔案的最後一行(shift+G), 輸入以下內容:
zend_extension=opcache.so;

> 儲存並退出
:wq!

修改php配置檔案之開啟 mysqli 擴充套件

> 修改 `php.ini` 配置檔案, 開啟 `mysqli` 擴充套件

[[email protected] php-src-php-7.1.6]#  vim /usr/local/php/etc/php.ini

> 找到 `extension` 位置, 輸入以下內容

; For UNIX OS open mysqli extension
extension=mysqli.so
extension=pdo_mysql.so

> 儲存並退出

:wq!

新增 php-fpm 管理相關的配置檔案到系統配置目錄 /etc/init.d

> 將php原始碼編譯目錄下的 `sapi/fpm/init.d.php-fpm` 檔案拷貝到系統配置 `/etc/init.d` 目錄下並重命名為 `php-fpm`

[[email protected] php-src-php-7.1.6]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

新增 php-fpm 配置檔案

> 將php安裝目錄下的 `/usr/local/php/etc/php-fpm.conf.default` 檔案拷貝同目錄下並重命名為 `php-fpm.conf`

[[email protected] php-src-php-7.1.6]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

新增 www.conf 配置檔案

> 將php安裝目錄下的 `/usr/local/php/etc/php-fpm.d/www.conf.default` 檔案拷貝同目錄下並重命名為 `www.conf`

[[email protected] php-src-php-7.1.6]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

新增php安裝目錄到系統環境變數

> 建立並開啟檔案php.sh

[[email protected] php-src-php-7.1.6]# vim /etc/profile.d/php.sh

> 新增內容如下:

export PATH=$PATH:/usr/local/php/bin/:/usr/local/php/sbin/

> 儲存並退出

:wq!

> 使用source立即生效剛剛新增的php環境變數

[[email protected] php-src-php-7.1.6]# source /etc/profile.d/php.sh

設定PHP日誌目錄和php-fpm執行程序的ID檔案目錄

php-fpm執行程序的ID檔案也就是 php-fpm.sock

其中設定php-fpm程序目錄的使用者和使用者組為nginx,

有於我在安裝nginx時已經建立, 在這裡我就不建立了, 只是列舉

> 新增系統使用者組nginx (如果你沒有建立過系統使用者組nginx請建立)

[[email protected] php-src-php-7.1.6]# groupadd -r nginx

> 建立新的系統使用者nginx, 並新增到系統使用者組nginx, 設定不允許此使用者名稱登入shell (如果你沒有建立過系統使用者nginx請建立)

[[email protected] php-src-php-7.1.6]# useradd -r -g nginx -s /sbin/nologin -d /usr/local/nginx -M nginx

> 說明一下上面建立系統使用者nginx所使用的選項什麼意思

-r: 新增系統使用者( 這裡指將要被建立的系統使用者nginx )

-g: 指定要建立的使用者所屬組( 這裡指新增到新系統使用者nginx到nginx系統使用者組 )

-s: 新帳戶的登入shell( `/sbin/nologin` 這裡設定為將要被建立系統使用者nginx不能用來登入系統 )

-d: 新帳戶的主目錄( 這裡指定將要被建立的系統使用者nginx的家目錄為 `/usr/local/nginx` )

-M: 不要建立使用者的主目錄( 也就是說將要被建立的系統使用者nginx不會在 `/home` 目錄下建立 `nginx` 家目錄 )


> 建立 `php-fpm` 日誌目錄

[[email protected] php-src-php-7.1.6]# mkdir -p /var/log/php-fpm/

> 建立 `php-fpm` 程序的ID(php-fpm.sock)檔案執行目錄

[[email protected] php-src-php-7.1.6]#  mkdir -p /var/run/php-fpm

> 修改 `php-fpm` 程序的ID(php-fpm.sock)檔案執行目錄的所屬使用者和組

[[email protected] php-src-php-7.1.6]# chown -R nginx:nginx /var/run/php-fpm/

修改session的目錄配置

> 建立 `session` 存放目錄

[[email protected] php-src-php-7.1.6]#  mkdir -p /var/lib/php/session

> 修改 `session` 存放目錄的所屬使用者和組

[[email protected] php-src-php-7.1.6]# chown -R nginx:nginx /var/lib/php

> 再次修改 `php.ini` 檔案

[[email protected] php-src-php-7.1.6]# vim /usr/local/php/etc/php.ini

> 找到 `session.save_path` 修改為如下內容:

session.save_path = "/var/lib/php/session"

> 儲存並退出

:wq!

設定php開機啟動

> 修改系統配置目錄下的 `php-fpm` 檔案可執行許可權

[[email protected] php-src-php-7.1.6]# chmod +x /etc/init.d/php-fpm

> 將系統配置目錄下的 `php-fpm` 新增到 `系統服務`

[[email protected] php-src-php-7.1.6]# chkconfig --add php-fpm

> 設定 `php-fpm` `系統服務` 為開機啟動

[[email protected] php-src-php-7.1.6]# chkconfig php-fpm on

檢測 php-fpm 系統服務是否啟動成功

> 用 chkconfig 命令檢測一下服務是否執行成功

[[email protected] php-src-php-7.1.6]# chkconfig --list | grep php-fpm
Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

php-fpm         0:off   1:off   2:on    3:on    4:on    5:on    6:off

> 可見服務已經在 第2 到 第5 執行等級開啟



> 同樣你也可以禁用 `php-fpm` 開機啟動

[[email protected] php-src-php-7.1.6]# chkconfig php-fpm off

> 用 chkconfig 命令檢測一下服務是否執行成功

[[email protected] php-src-php-7.1.6]# chkconfig --list | grep php-fpm

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

php-fpm         0:off   1:off   2:off   3:off   4:off   5:off   6:off

> 可見服務已經在 第2 到 第5 執行等級已經關閉

測試PHP的配置檔案是否無誤

[[email protected] php-src-php-7.1.6]# php-fpm -t
[18-Jun-2017 13:02:33] NOTICE: configuration file /usr/local/php/etc/php-fpm.conf test is successful

出現上面的提示也就是測試配置檔案通過沒有問題, 可以正式使用php服務了

啟動php系統服務

> 使用 `systemctl start` + `服務名` 啟動系統服務

[[email protected] php-src-php-7.1.6]# systemctl start php-fpm.service

檢視php系統服務狀態

> 使用 `systemctl status` + `服務名` 檢視系統服務狀態

[[email protected] php-src-php-7.1.6]# systemctl status php-fpm.service
● php-fpm.service - LSB: starts php-fpm
   Loaded: loaded (/etc/rc.d/init.d/php-fpm; bad; vendor preset: disabled)
   Active: active (running) since Sun 2017-06-18 13:05:26 EDT; 2min 46s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 105210 ExecStart=/etc/rc.d/init.d/php-fpm start (code=exited, status=0/SUCCESS)
   Memory: 11.0M
   CGroup: /system.slice/php-fpm.service
           ├─105212 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
           ├─105213 php-fpm: pool www
           ├─105214 php-fpm: pool www
           └─105215 php-fpm: pool www

Jun 18 13:05:19 localhost.localdomain systemd[1]: Starting LSB: starts php-fpm...
Jun 18 13:05:24 localhost.localdomain php-fpm[105210]: Starting php-fpm  done
Jun 18 13:05:26 localhost.localdomain systemd[1]: Started LSB: starts php-fpm.

你可以看到一個綠色的 active (running) 說明系統服務 php-fpm 已經在工作服務了,

有沒有覺得自從RedHat系統到7以後, 越來越舒心了(哈哈)

CLI檢視php版本資訊

[[email protected] ~]# php -v
PHP 7.1.6 (cli) (built: Jun 25 2017 13:42:29) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.1.6, Copyright (c) 1999-2017, by Zend Technologies

修改nginx配置檔案使之使用nginx反向php直譯器

修改nginx配置檔案使之使用nginx反向php直譯器, 也就是php-fpm它其實就是cgi

> 說明一下我在安裝的nginx是將配置檔案放在 `/etc/nginx/` 目錄下

> 修改配置檔案如下:

server {
    listen       80;
    server_name  www.nginx.dev;


    #charset koi8-r;

    access_log  logs/nginx.dev.access.log  main;

    location / {
        root   /data/www/html;
        index  index.php index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /data/www/html;
    }

    location ~ ^/(images|javascript|js|css|flash|media|static)/ {

        expires 30d;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
    #    root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /data/www/html/$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }
}

> 建立檔案

[[email protected] php-src-php-7.1.6]# touch /data/www/html/index.php

> 編輯檔案

[[email protected] php-src-php-7.1.6]# vim  /data/www/html/index.php

> 輸入內容

<?php

phpinfo();

> 儲存退出

:wq!

> 重新載入nginx配置

[[email protected] php-src-php-7.1.6]# /usr/local/nginx/sbin/nginx -s reload

瀏覽器訪問

瀏覽器訪問

至此PHP7.1也就編譯安裝成功了, 也和nginx建立了關係

相關推薦

CentOS7.3編譯安裝PHP7.1

CentOS7.3編譯安裝PHP7.1 說明 安裝依賴包 建立使用者及使用者組 下載php71並解壓 下載並安裝php依賴 PHP語法分析器re2c 加密支援擴充套件庫libmcrypt 加密方式擴充套件庫mhash 加密方式擴充套

centos7.3編譯安裝OpenSSL1.1.1b

開發十年,就只剩下這套架構體系了! >>>   

centos7.3編譯安裝php-7.1.10

編譯 php實驗環境:centos7.3主機一臺apache服務配置結束http://php.net/ 官網下載最新版php源碼包實驗前準備]#yum install libxml2-devel -y ]#yum install bzip2-devel -y ]#yum install libmcrypt-d

centos7.3+nginx1.8+php7.1+mysql5.7 安裝(三安裝mysql)

1、配置YUM源 # 下載mysql源安裝包 shell> wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm # 安裝mysql源 shell> yum loca

centos7.3+nginx1.8+php7.1+mysql5.7 安裝(一安裝nginx)

1、先解除安裝老版本 yum remove nginx   2、編輯nginx的yum源配置 vi /etc/yum.repos.d/nginx.repo   往裡面寫入 [nginx]   name=nginx repo   base

centos7.3 編譯安裝lamp,利用wordpress實現個人博客搭建

編譯安裝apache、編譯安裝mariadb、編譯安裝php   搭建個人博客軟件環境:centos7.3軟件包:apr-1.5.2.tar.bz2apr-util-1.5.4.tar.bz2httpd-2.4.27.tar.bz2mariadb-10.2.7-linux-x86_64.tar.gz

CentOS7.3編譯安裝MariaDB10.2.12

創建 open sta mysql lin ack cli tex 最小化 在CentOS7.3編譯安裝MariaDB10.2.12詳細教程1. 刪除CentOS7.3默認數據庫配置文件查看默認數據庫配置文件[root@localhost ~]# find -H /etc/

centos7 yum快速安裝php7.1

1. 安裝nginx yum install nginx ##開啟nginx service nginx start 2.安裝MYSQLyum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

cenots7編譯安裝php7.1.23

進入官網下載原始碼 http://php.net/downloads.php 選擇對應的版本   wget http://am1.php.net/distributions/php-7.1.23.tar.gztar zxvf php-7.1.23.tar.gzcd php-7

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

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

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

fda php-fpm connect 關閉 zlib ffffff port php的擴展 說明 好幾個月之間其實已經配置過LAMP LNMP等等一些配置,以前配置都是按照晚上抄的,基本都能配置出來,現重頭學想自己配置下,但是發現好多配置都忘了 ,中間踩了幾個坑,記錄下

centos7.2編譯安裝php7.2 nginx

環境 系統:Centos7.2  服務:Nginx   1:下載PHP7.0.2的安裝包解壓,編譯,安裝: ? 1 2 3 4 $ cd

CentOS7.4 編譯安裝 php7

阿里雲 CentOS7.4 編譯安裝 PHP7.1.11 下載並解壓原始碼包 tar zxf php-7.1.11.tar.gz cd php-7.1.11 安裝編譯php所需的依賴包 yum install -y gcc gcc-c++ make automake

CentOS7.3編譯安裝NodeJS6.10.0

在CentOS下采用編譯node二進位制原碼包的方式安裝nodejs。 1.去官網下載nodejs的安裝包 OR 直接通過wget命令下載。 2.直接官網下載的安裝包需要先上傳到伺服器,

CentOS7.3編譯安裝NodeJS6.10

概述 在CentOS7下采用編譯NodeJS二進位制原始碼包的方式安裝NodeJS 下載NodeJS安裝包 你可以先下載NodeJS二進位制原始碼安裝包檔案然後上傳到CentO

centos7 yum快速安裝php7.1+nginx+mysql+redis

本文介紹快速安裝lnmp環境,以及redis,php-redis擴充套件 1. 安裝nginx yum install nginx ##開啟nginx service nginx start 安裝

CentOS7編譯安裝ffmpeg3.1.5

一、安裝依賴包 # yum -y install gcc glibc glibc-devel make nasm pkgconfig lib-devel openssl-devel expat-dev

Centos7-64 編譯安裝PHP7.2.2

根據慕課網視訊整理,視訊路徑:https://www.imooc.com/video/12898    編譯安裝        make        make install1.安裝 vimyum install vim2.進入官網下載 http://www.php.net

CentOS7.3編譯安裝PHP

req ati mysql- centos7 文件 sts Opens mod curl 系統:CentOS Linux release 7.3.1611內核:3.10.0-514.el7.x86_64PHP:php-5.3.27.tar.gz 步驟:#yum instal

nginx+php7+mysql 在centos7.3安裝

打開 cannot freetype res user error: nbsp repl source 1、Nginx yum安裝   1)添加Nginx到YUM源     添加CentOS 7 Nginx yum資源庫,打開終端,使用以下命令:     sudo rp