Centos 编译安装 PHP7.4.7

一、安装相关依赖

yum -y install gcc gcc-c++

yum -y install libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel libicu-devel freetype-devel openldap-devel openldap openldap-devel oniguruma-devel libxslt-devel

二、下载压缩包并解压

wget https://www.php.net/distributions/php-7.4.7.tar.gz

tar -zxvf php-7.4.7.tar.gz

cd php-7.4.7

三、生成配置

./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-fpm-user=www \
--with-fpm-group=www \
--with-curl \
--with-MySQL=/usr/local/mysql \
--with-freetype-dir=/usr/local/freetype \
--enable-gd \
--with-gettext \
--with-iconv-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=/usr/local/libpng \
--with-jpeg-dir=/usr/local/libjpeg \
--with-xmlrpc \
--with-xsl \
--with-zlib \
--with-zlib-dir=/usr/local/zlib \
--with-bz2 \
--with-mhash \
--with-zip \
--enable-fpm \
--enable-bcmath \
--enable-libxml \
--enable-inline-optimization \
--enable-mbregex \
--enable-mbstring \
--enable-opcache \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvsem \
--enable-sysvshm \
--enable-xml \
--enable-zip \
--enable-fpm

上面执行没问题的话就会出现这样

Centos 编译安装 PHP7.4.7

四、make && make install

接下来执行 make

make && make install

这一步当显示如下时则表示安装成功了

Centos 编译安装 PHP7.4.7

五、简化PHP执行命令

编辑 .bash_profile 文件

vim ~/.bash_profile

然后插入如下图中的代码片段

Centos 编译安装 PHP7.4.7

接着刷新这个文件

source ~/.bash_profile

这个时候就可以直接用 php 命令了

Centos 编译安装 PHP7.4.7

六、将 PHP.ini 文件放到安装目录

cp /root/php7.4.7/php.ini-production /usr/local/php/etc/php.ini

七、复制 php-fpm 配置文件

cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

八、复制 php-fpm 下的 www.conf 配置文件

cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

九、用个例子测试PHP是否可用

在任意目录新建一个 test.php,插入如下内容

<?php
echo("测试PHP是否可用, 
现在的时间是:".date("Y-m-d H:i:s"));

执行该文件

php test.php

显示如下表示可用

Centos 编译安装 PHP7.4.7

QA:以下为安装过程中记录下的问题及解决办法

1、执行 ./configure 报错 No package ‘libzip’ found

Centos 编译安装 PHP7.4.7
这一步使用 yum install libzip-devel 不管用,因为版本低,我们直接源码安装

#卸载老版本的libzip
yum remove libzip
#下载安装libzip-1.2.0
wget https://libzip.org/download/libzip-1.2.0.tar.gz
tar -zxvf libzip-1.2.0.tar.gz
cd libzip-1.2.0
./configure
make && make install

安装完成后,查看是否存在/usr/local/lib/pkgconfig目录,如果存在,执行如下命令来设置PKG_CONFIG_PATH:

export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/"

2、make 这一步时报错如下

Centos 编译安装 PHP7.4.7
这个报错具体原因未找到,因为我在自己的机器上是没有这个报错的,但是公司的机器上有,有想过重装 sqlite,但是不知道这个 sqlite 在这台机器上其他地方有没有用到,怕影响其他,所以换了一种思路,就是在编译 PHP 的时候不编译 sqlite,修改后的 ./configure 编译参数如下

./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-fpm-user=www \
--with-fpm-group=www \
--with-curl \
--with-freetype-dir \
--enable-gd \
--with-gettext \
--with-iconv-dir \
--with-kerberos \
--with-libdir=lib64 \
--with-libxml-dir \
--with-mysqli \
--with-openssl \
--with-pcre-regex \
--with-pdo-mysql \
--with-pear \
--with-png-dir=/user/local/libpng \
--with-jpeg-dir=/user/local/libjpeg \
--with-xmlrpc \
--with-xsl \
--with-zlib \
--with-zlib-dir=/user/local/zlib \
--with-bz2 \
--with-mhash \
--with-zip \
--enable-fpm \
--enable-bcmath \
--enable-libxml \
--enable-inline-optimization \
--enable-mbregex \
--enable-mbstring \
--enable-opcache \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvsem \
--enable-sysvshm \
--enable-xml \
--enable-zip \
--enable-fpm \
--without-sqlite3 \
--without-pdo-sqlite

3、修改 php-fpm.conf 或 www.conf 配置文件时,两个文件内的配置项要唯一,不能同一个配置项在两个文件内都存在,否则会报错起冲突

4. 编译PHP报错:configure: error: Please reinstall the BZip2 distribution

# 原链接:https://blog.csdn.net/qq_35202206/article/details/81126025
yum -y install bzip2-devel

参考文章

去除php7编译安装的模块sqlite3
解决 yum install oniguruma oniguruma-devel 安装不生效问题
centos8安装php7.4.10时的各类错误
centos7 编译安装php7.4.7
在CentOS7.6里编译安装PHP7.4(最新版),很详细
关于编译安装php的php.ini找不到
PHP设置默认时区
linux中编译安装php7 用systemctl启动
Linux 安装并启用 PHP-FPM
php-fpm 启动参数及重要配置详解

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!