安装步骤

PHP官网下载链接:https://www.php.net/downloads.php

1. 使用wget命令下载源码安装包

wget https://www.php.net/distributions/php-7.3.8.tar.gz --no-check-certificate

【说明】如果报SSL Certification错误信息的话,就加上 --no-check-certificate选项,一般不需要添加。

2. 解压.tar.gz文件

tar -xzvf php-7.3..tar.gz

3. 进入php-7.3.8目录下,执行./configure,即配置和构建PHP

  • 查看configure的用法以及配置选项: ./configure -h 或者 --help
  • php常用配置及其说明
--prefix=/usr/local/php7 # 配置安装目录
--with-config-file-path=/usr/local/php7 # 配置文件 php.ini 的路径
--enable-sockets # 开启 socket
--enable-fpm # 启用 fpm 扩展
--enable-cli # 启用 命令行模式 (从 php 4.3. 之后这个模块默认开启所以可以不用再加此命令)
--enable-mbstring # 启用 mbstring 库
--enable-pcntl # 启用 pcntl (仅 CLI / CGI)
--enable-soap # 启用 soap
--enable-opcache # 开启 opcache 缓存
--disable-fileinfo # 禁用 fileinfo (由于 5.3+ 之后已经不再持续维护了,但默认是开启的,所以还是禁止了吧)(1G以下内存服务器直接关了吧)
--disable-rpath #禁用在搜索路径中传递其他运行库。
--with-mysqli # 启用 mysqli 扩展
--with-pdo-mysql # 启用 pdo 扩展
--with-iconv-dir # 启用 XMLRPC-EPI 字符编码转换 扩展
--with-openssl # 启用 openssl 扩展 (需要 openssl openssl-devel)
--with-fpm-user=www #设定 fpm 所属的用户
--with-fpm-group=www #设定 fpm 所属的组别
--with-curl # 启用 curl 扩展
--with-mhash # 开启 mhash 基于离散数学原理的不可逆向的php加密方式扩展库
# GD
--with-gd # 启用 GD 图片操作 扩展
--with-jpeg-dir # 开启对 jpeg 图片的支持 (需要 libjpeg)
--with-png-dir # 开启对 png 图片支持 (需要 libpng)
--with-freetype-dir # 开启 freetype
# 压缩
--enable-zip # 启用 zip
--with-zlib # 启用对 zlib 支持
# xml
--enable-simplexml # 启用对 simplexml 支持
--with-libxml-dir # 启用对 libxml2 支持 #一些不常用的配置
--enable-debug # 开启 debug 模式

我执行configure的命令如下:

./configure --prefix=/usr/local/php7 \
--with-config-file-path=/usr/local/php7 \
--enable-sockets \
--enable-fpm \
--enable-cli \
--enable-mbstring \
--enable-pcntl \
--enable-soap \
--enable-opcache \
--disable-fileinfo \
--disable-rpath \
--with-mysqli
--with-pdo-mysql \
--with-iconv-dir \
--with-fpm-user=www \
--with-fpm-group=www \
--with-curl=/usr/local/curl \
--with-mhash \
--with-gd=no \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--enable-zip \
--with-zlib \
--enable-simplexml \
--with-libxml-dir \
--with-openssl=/usr/local/openssl

在执行过程中,可能会有报错。我在执行过程中,遇到了curl和OpenSSL库的安装路径没有找到,因为不是安装在/etc/bin和/etc/lib路径下,所以需要手动设置这两个库的安装路径:

--with-curl=/usr/local/curl

--with-openssl=/usr/local/openssl

我关闭了GD图片操作扩展,即:--with-gd=no,如果是:--with-gd ,则表示开启。

4. 编译和安装

make && make install

5. 配置PHP环境变量

(1)vim /etc/profile //需要root权限
(2)在profile文件末尾添加如下内容:
export PATH=$PATH:/usr/local/php7/bin  #这一步可以让我们全局使用php命令
(3) source /etc/profile                               #让修改后的profile生效
(4) php -i //查看配置信息

如果第4步的执行成功打印了PHP information的话,表示PHP已经安装成功了。

## 查看php的用法帮助

$ php -h

## 查看php的版本信息

$ php -v

6. 配置php.ini文件

$ php -i|grep php.ini

Configuration File (php.ini) Path => /usr/local/php7
Loaded Configuration File => /usr/local/php7/php.ini

配置文件在安装包目录下: php-7.3.8/
php.ini-development   //开发模式版本
php.ini-production      //生产模式版本
这里,我们选择生产模式版本复制到指定路径下

$ cp php.ini-production /usr/local/php7/php.ini

<注意> php.ini文件所在的目录一定要与php -i里面查出的位置保持一致,不然修改php.ini文件是不会生效的。

7. 安装composer

> wget https://getcomposer.org/composer.phar
> cp composer.phar /usr/bin/composer
> cd /usr/bin; chmod u+x composer
> composer -v

如果打印出composer的版本信息,即表示composer安装成功了。

遇到的问题

【问题】error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed

1. 下载证书。https://curl.haxx.se/ca/cacert.pem,存放路径: /home/lbs/cert/cacert.pem(这个路径自定义)
2. 修改php.ini配置文件
> cd /usr/local/php7/;ls
> vim php.ini
修改openssl.cafile= /home/lbs/cert/cacert.pem

【参考】

centos7 源码编译安装 php  https://www.cnblogs.com/l5gw/p/10992958.html

编译php7.1.4出现 undefined reference to isfinite    https://blog.csdn.net/letshi/article/details/71079677

Linux环境下composer的安装  https://blog.csdn.net/lifei15731208550/article/details/91039823

CentOS7.6源码编译安装PHP 7.3.8的更多相关文章

  1. Centos7.X 源码编译安装subversion svn1.8.x

    说明:SVN(subversion)的运行方式有两种:一种是基于Apache的http.https网页访问形式:还有一种是基于svnserve的独立服务器模式.SVN的数据存储方式也有两种:一种是在B ...

  2. CentOS7.5源码编译安装mysql5.7.29

    #查看系统版本 [root@ctos3 ~]# cat /etc/redhat-release CentOS Linux release (Core) #下载源码包,需要注意的是mysql5.7 编译 ...

  3. Centos7下源码编译安装python3.6

    测试环境: 操作步骤: 1. 下载Python源码包(python3.6.0) 官网下载地址:https://www.python.org/downloads/ 搜狐下载地址:http://mirro ...

  4. centos7.2 源码编译安装php7.2.4 apache2.4.37 https证书安装

    一.php7.2.11源码安装 1.下载php7.2.11 wget http://cn2.php.net/downloads.php/php-7.2.11.tar.gz#### 2.安装依赖 yum ...

  5. Centos7.5 源码编译安装PHP

    安装依赖 yum -y install epel-release yum -y install  gcc gcc-c++ make pcre pcre-devel zlib zlib-devel op ...

  6. Centos7下源码编译安装与配置redis5.0

    1.下载redis5.0源码包 wget http://download.redis.io/releases/redis-5.0.5.tar.gz 2.检查是否安装过之前的历史版本 rpm -qa|g ...

  7. Centos7.2源码编译安装LA(N)MP

    LAMP环境中php是作为apache的模块安装的,所以安装顺序是php放在apache的后面安装,这样便于安装php时可以在apache的模块目录生成对应的php模块. apache版本:2.4.3 ...

  8. centos7 源码编译安装TensorFlow CPU 版本

    一.前言 我们都知道,普通使用pip安装的TensorFlow是万金油版本,当你运行的时候,会提示你不是当前电脑中最优的版本,特别是CPU版本,没有使用指令集优化会让TensorFlow用起来更慢. ...

  9. Centos7源码编译安装PHP7.2(生产环境)

    安装PHP依赖包,否则在编译的过程中可能会出现各种报错 # Centos 安装epel-release源并将系统包更新到最新版本 $ yum install epel-release-y $ yum ...

随机推荐

  1. 并发编程-concurrent指南-交换机Exchanger

    java.util.concurrent包中的Exchanger类可用于两个线程之间交换信息.可简单地将Exchanger对象理解为一个包含两个格子的容器,通过exchanger方法可以向两个格子中填 ...

  2. C语言中const的用法总结

          const是一个C语言的关键字,它限定一个变量不允许被改变.使用const在一定程度上可以提高程序的安全性和可靠性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程 ...

  3. Oracle Goldengate是如何保证数据有序和确保数据不丢失的?

    工作中一直在用Oracle 的中间件Oracle GondenGate 是如何保证消息的有序和不丢失呢? Oracle GoldenGate逻辑架构 首先,先看一下Oracle GoldenGate ...

  4. set.contains()分析

    先看一段代码 Set s = new HashSet(); List<String> list = new ArrayList<>(); list.add("a&qu ...

  5. 使用Mysql执行SQL语句基础操作

    SQL:  又叫结构化语言,是一种用来操作RDBMS的数据库语言,在关系型数据库中都支持使用SQL语句,如oracle.mysql等等. 注意: 在关系型数据库中sql语句是通用的,而在非关系型数据库 ...

  6. Jenkins使用总结,2.0 新时代:从 CI 到 CD

    Jenkins近阶段使用的总结篇,只写了个引子,却一直未动手写完,今天补上. 前几篇文章提到在内网jenkins直接构建部署升级线上环境,job都是暴露在外面,很容易被误操作,需要做简单的权限控制,以 ...

  7. I/O:Reader

    FileReader: /* 用来读取字符文件的便捷类.此类的构造方法假定默认字符编码和默认字节缓冲区大 小都是适当的.要自己指定这些值,可以先在 FileInputStream 上构造一个 Inpu ...

  8. Mac上pycharm集成pyspark

    前提: 1.已经安装好spark.我的是spark2.2.0. 2.已经有python环境,我这边使用的是python3.6. 一.安装py4j 使用pip,运行如下命令: pip install p ...

  9. TreeMap原理实现及常用方法

    目录 一. TreeMap概述 二. 红黑树回顾 三. TreeMap构造 四. put方法 五. get 方法 六. remove方法 七. 遍历 八. 总结 前面我们分别讲了Map接口的两个实现类 ...

  10. linux 反弹shell

    Linux下反弹shell笔记 0x00 NC命令详解 在介绍如何反弹shell之前,先了解相关知识要点. nc全称为netcat,所做的就是在两台电脑之间建立链接,并返回两个数据流 可运行在TCP或 ...