【Linux】centos7安装php7.4

环境说明

本文档在服务器不能连接互联网的情况下,进行安装php7.4及其扩展。

操作系统:centos7.6

架构:X86_64

一、安装依赖(可选)

**说明:**服务器能联网就可以通过 yum install 命令下载对应php需要的依赖。

bash 复制代码
yum -y install zlib zlib-devel libpng libpng-devel libzstd-devel sqlite-devel libcurl-devel libjpeg-devel oniguruma-devel libxslt-devel libzip-devel autoconf

二、下载php包

下载地址:PHP: Releases

下载7.4.30版本的php。

三 、安装php

1.上传并解压

bash 复制代码
# 解压
tar -zxvf php-7.4.30.tar.gz
# 切换到解压目录
cd php-7.4.30

2.编译安装

(1)编译配置
bash 复制代码
# 检测系统环境并准备一个定制化的编译配置
./configure \
--prefix=/soft/php74 \
--with-config-file-path=/soft/php74/etc \
--with-libdir=/usr/lib64 \
--with-freetype=/usr/include/freetype2/freetype/ \
--with-jpeg=/usr/lib64 \
--disable-rpath \
--with-curl \
--enable-gd \
--with-gettext \
--with-mysqli \
--with-openssl \
--with-openssl-dir \
--with-iconv \
--with-zip \
--with-pdo-mysql \
--with-pdo-sqlite \
--with-xsl \
--with-zlib \
--with-bz2 \
--with-mhash \
--enable-fpm \
--enable-pdo \
--enable-session \
--enable-simplexml \
--enable-bcmath \
--enable-mbregex \
--enable-mbstring \
--enable-opcache \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-mysqlnd \
--enable-xml \
--enable-phar 
(2)编译安装
bash 复制代码
make -j && make install

成功后如图:

3.安装扩展

(1)安装 igbinary
bash 复制代码
# 1.下载igbinary的包
# 2.上传igbinary包并解压
tar -zxvf igbinary-3.2.7.tgz
# 3.切换到 igbinary-3.2.7
cd igbinary-3.2.7
# 4.执行phpize命令(根据自己目录相应替换)
/soft/php74/bin/phpize 
# 5.编译安装
./configure --with-php-config=/soft/php74/bin/php-config
make -j && make install

可参考我安装 igbinary 的具体文章:【Linux】安装PHP扩展-igbinary_linux igbinary-CSDN博客

(2)安装redis扩展
bash 复制代码
# 1.下载redis的包
# 2.上传redis包并解压
tar -zxvf redis-5.3.7.tgz
# 3.切换到 redis-5.3.7
cd redis-5.3.7
# 4.执行phpize命令(根据自己目录相应替换)
/soft/php74/bin/phpize 
# 5.编译安装
./configure --with-php-config=/soft/php74/bin/php-config --enable-redis-igbinary=yes --enable-redis-lzf=yes --enable-redis-zstd=yes
make -j && make install

可参考我安装 redis 的具体文章:【Linux】安装PHP扩展-redis-CSDN博客

(3)安装swoole
bash 复制代码
# 1.下载swoole的包
# 2.上传swoole包并解压
tar -zxvf swoole-4.8.11.tgz
# 3.切换到 swoole-4.8.11
cd swoole-4.8.11
# 4.执行phpize命令(根据自己目录相应替换)
/soft/php74/bin/phpize 
# 5.编译安装
./configure --with-php-config=/soft/php74/bin/php-config --enable-sockets=yes --enable-openssl=yes --enable-http2=yes --enable-mysqlnd=yes --enable-swoole-json=yes --enable-swoole-curl=yes

make -j && make install

4.配置php

bash 复制代码
# 当前目录在php-7.4.30目录执行
cp php.ini-production /soft/php74/etc/php.ini
cp /soft/php74/etc/php-fpm.conf.default /soft/php74/etc/php-fpm.conf
cp soft/php74/etc/php-fpm.d/www.conf.default /soft/php74/etc/php-fpm.d/www.conf

#复制启动脚本
cp sapi/fpm/init.d.php-fpm /etc/init.d/php74-fpm
# 给予可执行权限
chmod +x /etc/init.d/php74-fpm

5.配置php.ini(可选)

自行根据需要进行配置,如限制上传文件大小、配置安装扩展目录等。

6.配置环境变量

在 /etc/profile文件末尾添加php环境变量

bash 复制代码
export PHP_HOME=/soft/php74
export PATH=$PATH:$PHP_HOME/bin:$PHP_HOME/sbin


#保存后刷新环境变量:
source /etc/profile

# 查看php版本
php -v

7.php-fpm的启动、停止和重启

php74-fpm取决于你复制到/etc/init.d/目录下文件名。

bash 复制代码
#启动
service php74-fpm start

#停止
service php74-fpm stop

#重启
service php74-fpm restart

四、遇到的问题

问题一:configure: error: Package requirements (libpng) were not met:

解决方案:安装libpng

先查看安装libpng的情况

bash 复制代码
rpm -qa|grep libpng

如图所示:安装了libpng但是没安装libpng-devel,安装版本需要对应否则会安装不上,因此安装libpng-devel即可解决。命令:rpm -ivh libpng-devel-1.5.13-7.el7_2.x86_64.rpm

libpng-devel-1.5.13-7.el7_2.x86_64.rpm可自行下载或私信。

安装完成,在执行php的 ./configure 配置命令即可。

问题二:configure: error:Package requirements (freetype2) met:were not met:

解决方案:安装freetype2

和libpng的解决方案一致。

安装 freetype-devel

问题三: configure: error: Package requirements (oniguruma) were not met

解决参考博客:【Linux】安装php7.4报错configure: error: Package requirements (oniguruma) were not met_php安装error requirement oniquruma-CSDN博客

问题四:configure: error: Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not met

解决参考博客:【Linux】centos7安装PHP7.4报错:libzip版本过低_centos php7.4 configure: error: package requiremen-CSDN博客

相关推荐
无足鸟ICT7 分钟前
【RHCA+】ipcrm命令(删除IPC资源)
linux
星恒随风1 小时前
MySQL 从零入门(四):表的增删改查与基础查询详解
linux·服务器·数据库·笔记·mysql
Z21-X2 小时前
云原生运维学习笔记:ECShop全链路容器化部署与Docker底层资源隔离深度剖析
运维·笔记·学习·云原生
陈希1234 小时前
Linux 网络诊断工具实战:ping、curl、tcpdump、mtr、dig 用法详解
linux·网络·tcpdump
进击的荆棘4 小时前
Linux系统——线程同步与互斥之线程池和安全
linux·运维·服务器·安全·单例模式·线程
刘大望4 小时前
不用买开发板:用 QEMU 走通嵌入式 Linux 全流程(三)存储与网络实地验证
linux·qemu·嵌入式linux·alpine
蜗牛一步步往上爬5 小时前
第六章 BMC常用的调试工具
服务器
小李不困还能学5 小时前
VSCode_RemoteSSH_一直卡在下载服务器_解决教程
服务器·ide·vscode
瑞雪兆丰年兮5 小时前
JavaWeb-day11-SpringBootWeb案例(文件上传)
java·运维·服务器·javaweb·oss
xbzb5 小时前
从零容器化部署 ECShop:Harbor 私有仓库 + 自定义 PHP 镜像 + LNMP 三容器
容器·php·harbor·镜像·仓库·ecshop