学习一个新东西。往往不是一蹴而就,工作中首要的是先明白怎么用,过后再去问,为什么这么用,原理是什么?
网上一大堆操蛋的编译安装教程。良莠不齐,对于一个新手来说,真的是很难操作,很难下手。作为一个新手过来人,这里记录一下编译安装踩下的坑。以便以后忘记了可以回来翻翻。
本文以一个纯净的64位Centos7.5.1804作为服务器系统,php版本为7.2,下面步入正题
下载地址来自centos官网可以自行选择

一、配置软件源,安装基本编译环境,创建用户

1.把系统软件源配置好,便于使用 yum 安装相关的依赖

#安装wget下载工具
yum -y install wget #参数-y表示跳过是否安装询问直接安装软件
#备份源文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak 
#获取阿里云源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#添加epel源
yum -y install epel-release
#清除缓存
yum clean all
#重建缓存
yum makecache

2.安装基本环境

yum -y install gcc gcc-c++ autoconf

3.创建用户

 sudo useradd -s /bin/false -M www

二、下载php源码

传送门PHP-7.2.11官方下载地址
选择合适节点下载,有中国节点选中国节点无中国节点推荐日本节点
执行以下命令

cd /usr/local/src
wget -O php-7.2.11.tar.gz http://jp2.php.net/get/php-7.2.11.tar.gz/from/this/mirror
tar -zxvf php-7.2.11.tar.gz
cd php-7.2.11

三、 配置编译参数 此处是重点,需细看

很多朋友都被拦截在这个位置,此处是php的编译重点位置,需重点关注。
常用配置如下。基本大部分场景够用了。

./configure \
--prefix=/usr/local/php/72  \
--with-config-file-path=/usr/local/php/72/etc \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-iconv-dir \
--with-freetype-dir=/usr/local/freetype \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl=/usr/local/include/curl \
--enable-mbregex \
--enable-mbstring \
--enable-intl \
--enable-ftp \
--with-gd \
--with-openssl-dir=/usr/local/include/openssl \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--with-gettext
# 回车即可,但是绝对会报错。不要怕跟着下面走
# \ 后面不能有任何空格之类的东西

配置详解

./configure \
--prefix=/usr/local/php/72  \ #PHP的安装位置
--with-config-file-path=/usr/local/php/72/etc \ #配置文件位置
--enable-fpm \ #启用php-fpm 
--with-fpm-user=www \ #运行php-fpm的用户
--with-fpm-group=www \ #运行php-fpm的用户组
--enable-mysqlnd \ #启用mysqlnd
--with-mysqli=mysqlnd \ #启用mysqli
--with-pdo-mysql=mysqlnd \ #启用pdo
--with-iconv-dir \ #支持iconv函数
--with-freetype-dir=/usr/local/freetype \ #支持freetype字体库
--with-jpeg-dir \ #支持jpeg
--with-png-dir \ #支持png
--with-zlib \ #支持zlib
--with-libxml-dir=/usr \ #支持xml
--enable-xml \ #支持xml
--disable-rpath \ #关闭额外的运行库文件
--enable-bcmath \ #打开图片大小调整
--enable-shmop \ #支持shmop
--enable-sysvsem \ #支持sysvsem
--enable-inline-optimization \ #
--with-curl=/usr/local/include/curl \ #编译时curl库位置
--enable-mbregex \ #支持mbregex
--enable-mbstring \ #支持多字节字符串(例如中英文)
--enable-intl \ #支持intl
--enable-ftp \ #支持ftp
--with-gd \ #支持gd库
--with-openssl-dir=/usr/local/include/openssl \ #编译时openssl库位置
--with-openssl \ #支持openssl,加密传输
--with-mhash \ #算法
--enable-pcntl \ #支持pcntl,freeTDS需要用到
--enable-sockets \ #支持sockets
--with-xmlrpc \ #打开xml-rpc的C语言
--enable-zip \ #支持zip
--enable-soap \ #
--with-gettext  #支持gettext,编码库用

下面开始进行错误处理

1.错误信息:configure: error: libxml2 not found. Please check your libxml2 installation
解决方法: yum -y install libxml2-devel.x86_64 再次confiure

2.错误信息: configure: error: cURL version 7.10.5 or later is required to compile php with cURL support
解决方法: 编译安装一个curl 下载地址 选一个新版下载即可

1) cd /usr/local/src/
2)wget -O curl-7.61.0.tar.gz https://curl.haxx.se/download/curl-7.61.0.tar.gz
3)tar -zxvf curl-7.61.0.tar.gz && cd curl-7.61.0
4)./configure
5)make && make install

3.错误信息:configure: error: jpeglib.h not found.
解决方法:yum -y install libjpeg-turbo-devel.x86_64

4.错误信息:configure: error: png.h not found.
解决方法:yum -y install libpng-devel.x86_64

5.错误信息:configure: error: freetype-config not found.
解决方法:yum -y install freetype-devel.x86_64

6.错误信息:configure: error: Unable to detect ICU prefix or no failed. Please verify ICU install prefix and make sure icu-config works.
解决方法:yum -y install libicu-devel.x86_64

当出现如下信息时表示编译配置成功

Generating files
configure: creating ./config.status
creating main/internal_functions.c
creating main/internal_functions_cli.c
+--------------------------------------------------------------------+
| License:                                                           |
| This software is subject to the PHP License, available in this     |
| distribution in the file LICENSE.  By continuing this installation |
| process, you are bound by the terms of this license agreement.     |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point.                            |
+--------------------------------------------------------------------+

执行 make -j4 #-j4表示用多少核编译出现以下信息表示编译成功

Build complete.
Don't forget to run 'make test'.

执行 make install 进行安装
至此php编译安装完成

四、增加php配置文件,php-fpm配置文件,php加入环境变量,

分别执行以下命令

增加php配置文件

#进入php源码目录,此处有2个默认配置文件 根据情况选择即可
#1.php.ini-development 开发模式的配置文件
#2.php.ini-production 正式模式的配置文件
cp ./php.ini-development /usr/local/php/72/etc/php.ini
/usr/local/php/72/bin/php --ini #信息如下则编译安装成功 
Configuration File (php.ini) Path: /usr/local/php/72/etc
Loaded Configuration File:         /usr/local/php/72/etc/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

增加php-fpm配置文件

1.进入到php的配置目录 /usr/local/php/72/etc/
2.执行命令 cp php-fpm.d/www.conf.default ./php-fpm.conf
3.执行 ../sbin/php-fpm 启动php-fpm

加入环境变量

需加入环境变量的有4个

1.php
2.phpize
3.php-config
4.php-fpm

请按照以下命令创建软连接到path路径即可

ln -s /usr/local/php/72/bin/php /usr/bin/
ln -s /usr/local/php/72/bin/phpize /usr/bin/
ln -s /usr/local/php/72/bin/php-config /usr/bin/
ln -s /usr/local/php/72/sbin/php-fpm /usr/bin/

标签: none

添加新评论