CentOS7 下源代碼安裝php7


緒:配置選項講解:./configure --help | less

使用--enable-NAME--disable-NAME開關編譯哪些擴展和SAPI .

如果擴展或SAPI具有外部依賴關系,則需要使用--with-NAME--without-NAME.

如果NAME所需的庫 不在默認位置(例如,因為您自己編譯),則可以使用--with-NAME = DIR指定其位置.

如果選項是--enable-NAME--with-NAME說明該選項默認是關閉的.如果是--disable-NAME--without-NAME說明該選項默認是開啟的.

引用鏈接

  • enable 是啟用 PHP 源碼包自帶,但是默認不啟用的擴展,比如 ftp 和 exif 擴展。with 是指定擴展依賴的資源庫的位置,如果是默認位置,就可以留空。
  • php 的擴展分為靜態編譯和動態編譯兩種,靜態編譯就是隨着PHP的源碼一起編譯安裝,也就是 --enable 和 --with 啟用的擴展。動態編譯就是在一個已經可以使用的 PHP 環境下,使用 phpize 命令來給 php 增加擴展的方式,這種方式就是生成的 so 文件。所以想要把擴展編譯進 php 內核,就需要和 php 一起編譯安裝。
  • php源碼包ext目錄下的就是官方默認支持的擴展,還有一部分就是 pecl 庫里的擴展,pecl 的一部分擴展也是官方支持的,另一部分是第三方開發者支持的。
  • 把擴展跟隨php一起編譯安裝,也就是 configure 命令
比如 configure 命令行可能看起來象這樣:

$ ./configure --prefix=/where/to/install/php --enable-debug --enable-maintainer-zts --enable-cgi --enable-cli --with-mysql=/path/to/mysql

 

一、安裝PHP7:
安裝php:
# tar zxvf php-7.1.2.tar.gz
# cd php-7.1.2
#./configure --prefix=/usr/local/php71 \
 --with-apxs2=/usr/local/apache24/bin/apxs \
 --with-curl \
 --with-freetype-dir \
 --with-gd \
 --with-gettext \
 --with-iconv-dir \
 --with-jpeg-dir \
 --with-kerberos \
 --with-libdir=lib64 \
 --with-libxml-dir \
 --with-mysqli \
 --with-openssl \
 --with-pcre-regex \
 --with-pdo-mysql \
 --with-pdo-sqlite \
 --with-pear \
 --with-png-dir \
 --with-xmlrpc \
 --with-xsl \
 --with-zlib \
 --with-bz2 \
 --with-mhash \
 --with-fpm-user=www \
 --with-fpm-group=www \
 --enable- fpm \
 --enable- bcmath \
 --enable-libxml \
 --enable-inline-optimization \
 --enable- gd-native-ttf \
 --enable-mbregex \
 --enable- mbstring \
 --enable-opcache \
 --enable- pcntl \
 --enable- shmop \
 --enable- soap \
 --enable- sockets \
 --enable- sysvsem \
 --enable-sysvshm \
 --enable-xml \
 --enable- zip
 
#make
#make install
 
最后到php的解壓目錄復制一下php的配置文件
#cp php.ini-development /usr/local/php71/lib/php.ini 
因為默認配置文件目錄為 Configuration File (php.ini) Path     /usr/local/php/lib
 
目前apache 還無法加載PHP解析模塊
vim /usr/local/apache/conf/httpd.conf
在最下面加入一行AddHandler application/x-httpd-php .php
重啟Apache服務,然后寫一個簡單的檢測文件吧。
<?php
    phpinfo();
?>
把PHP加入環境變量
 
遇到的問題:

Sorry, I cannot run apxs. Possible reasons follow:

1. Perl is not installed

2. apxs was not found. Try to pass the path using --with-apxs2=/path/to/apxs

3. Apache was not built using --enable-so (the apxs usage page is displayed)

首先:看是是否安裝  perl -v

若沒有 則 wget  http://www.cpan.org/src/5.0/perl-5.16.1.tar.gz

tar  xzvf  perl-5.16.1.tar.gz

cd  perl-5.16.1.tar.gz

./Configure -des -Dprefix=/usr/local/perl

make

make install

然后,若有安裝perl :

1、根據不能run apxs 。cd 到apache的bin目錄下運行./apxs 運行結果

bash: ./apxs: /replace/with/path/to/perl/interpreter: bad interpreter: No such file or directory

2、vim apxs文件 找“/replace/with/path/to/perl/interpreter”關鍵字

在第一個行 :#!/replace/with/path/to/perl/interpreter -w

根據perl的安裝目錄 /usr/bin/perl

修改為:#! /usr/bin/perl -w

 
configure: error: libxml2 not found. Please check your libxml2 installation.
yum install libxml2-devel -y
 
configure: error: Cannot find OpenSSL's <evp.h>
yum install openssl-devel -y
 
configure: error: cURL version 7.10.5 or later is required to compile php with cURL support
yum install curl-devel -y
 
configure: error: png.h not found.
yum install libpng-devel -y
 
configure: error: freetype-config not found.
yum install freetype-devel -y
 
configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution
yum install libxslt-devel -y
 
 
綜上安裝php大概需要的擴展:
yum install -y \
libxml2 libxml2-devel openssl openssl-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libmcrypt libmcrypt-devel  libxslt-devel bzip2-devel
 
啟動 php-fpm 出現問題:
cd /usr/local/php71
cp etc/php-fpm.conf.default etc/php-fpm.conf
cp etc/php-fpm.d/ www.conf.default etc/php-fpm.d/ www.conf
 

重啟 php-fpm

我們在新安裝擴展后,是需要重新php-fpm的,已使擴展生效。

最簡單粗暴的重新php-fpm的方式是:

先找到php-fpm的進程號,kill 掉,再用/usr/local/php/sbin/php-fpm 這樣啟動。

其實還有更多溫和的方法,就是使用信號。

INT, TERM:立刻終止

QUIT:平滑終止

USR1:重新打開日志文件

USR2:平滑重載所有worker進程並重新載入配置和二進制模塊

示例:

php-fpm 關閉:kill -INT `cat /usr/local/php/var/run/php-fpm.pid`

php-fpm 重啟:kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

若是要生成php-fpm.pid文件,修改/usr/local/php71/etc/php-fpm.conf文件,默認pid是注釋的

 

添加systemctl 命令管理:
vim /lib/systemd/system/php-fpm.service

[Unit]
Description=php-fpm
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/php71/var/run/php-fpm.pid
ExecStart=/usr/local/php71/sbin/php-fpm
ExecReload=/bin/kill -USR2 MAINPID
ExecStop=/bin/kill −INT MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

 

二、文件解釋
 
生成的可執行文件php-fpm在sbin中,其他部分在bin目錄下。

其中,php是CLI模式下的PHP腳本執行程序。

PEAR(PHP Extension and Application Repository,PHP擴展與應用庫),是PHP官方開源類庫,可以使用pear list列出所有已經安裝的包。通過pear install可以安裝需要的包。

PECL是PHP的擴展庫,可以通過PEAR的Package Manager的管理

php-config是輸出PHP編譯信息的輔助命令。

phpdbg是一個輕量級,具有豐富功能的調試平台。PHP 5.4以上版本支持,比如可以使用它查看opcode

phpdbg的其他功能可以通過phpdbg--help查看。

phpize命令用來動態安裝擴展,如果在安裝PHP時沒有安裝某個擴展,可以通過這個命令隨時安裝。

 

 

參考文檔:
https://www.linuxidc.com/Linux/2014-02/96761.htm
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM