centos7离线安装PHP7
环境
centos7.9
PHP7.4.30
准备工作
在编译PHP时会提示一些包版本不够或者缺少某些包,一般选择yum来安装缺少的包,但因为是离线安装,所以可以手动配置本地yum源。先看一下系统版本
[root@xcc ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
下载系统对应的iso镜像文件CentOS-7.9-x86_64-Everything-2009.iso,传到服务器上并配置本地yum源。配置方法可以参考:https://www.cnblogs.com/haolb123/p/16553119.html
安装完下面这些,可以减少在编译PHP时提示的缺包问题。
yum install -y gcc gcc-c++ make cmake bison autoconf wget lrzsz
yum install -y libtool libtool-ltdl-devel
yum install -y freetype-devel libjpeg.x86_64 libjpeg-devel libpng-devel gd-devel
yum install -y python-devel patch sudo
yum install -y openssl* openssl openssl-devel ncurses-devel
yum install -y bzip* bzip2 unzip zlib-devel
yum install -y libevent*
yum install -y libxml* libxml2-devel
yum install -y libcurl* curl-devel
yum install -y readline-devel
yum install -y sqlite-devel.x86_64
附1:如果没有系统iso镜像文件,可以直接编译安装,提示缺少什么,就从https://pkgs.org/下载系统对应的包,然后手动rpm -i安装即可。有些包可能需要编译安装。
附2:单独下载rpm包安装时,会提示缺少依赖项等。而yum安装时会自动安装这个包的依赖项,所以还是建议配置本地yum源来装。
附3:安装完上面这些,如果是最小化安装PHP7.4.30则可以正常通过编译,可以直接make && make install安装PHP。
下载PHP
下载地址:https://www.php.net/downloads.php
安装
安装时,如果此时不指定./configure后面的扩展,后期也可以手动加上。
附:指定的扩展越多,编译时可能会遇到的问题越多,不要盲目的添加很多用不上的扩展,如果可以,建议选择默认(最小化)安装。
附:根据实际的web服务器开启适当的扩展,Nginx使用--enable-fpm,Apache使用--with-apxs2
tar zxvf php-7.4.30.tar.gz
cd php-7.4.30
./configure --prefix=/usr/local/php --with-config-file-scan-dir=/usr/local/php/etc/ --enable-inline-optimization --enable-opcache --enable-fpm --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-gettext --enable-mbregex --enable-mbstring --with-iconv --with-mhash --with-openssl --enable-bcmath --enable-soap --with-xmlrpc --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-sockets --with-curl --with-zip --with-bz2 --enable-gd --with-jpeg --with-readline --with-freetype --disable-fileinfo
#最小化安装-适合nginx平台
./configure --prefix=/usr/local/php --with-config-file-scan-dir=/usr/local/php/etc/ --enable-fpm
#最小化安装-适合apache平台(先安装httpd,--with-apxs2指定httpd安装位置)
./configure --prefix=/usr/local/php --with-config-file-scan-dir=/usr/local/php/etc/ --with-apxs2=/usr/sbin/apxs
PHP7的编译扩展有些更新,参考:https://www.php.net/manual/zh/migration74.other-changes.php
编译时遇到的一些问题
oniguruma
因为扩展指定了--enable-mbstring需要用到oniguruma包,如果用不到可以禁用这个扩展--disable-mbregex
下载地址:https://pkgs.org/download/oniguruma 和 https://pkgs.org/download/oniguruma-devel

安装
rpm -i oniguruma-devel-6.8.2-2.el7.x86_64.rpm
rpm -i oniguruma-6.8.2-2.el7.x86_64.rpm
libzip
继续编译PHP,提示libzip >= 0.11因为系统镜像里的版本是0.10,需要单独安装,这里下载1.2.0,因为高版本需要cmake。
下载地址:https://libzip.org/download/libzip-1.2.0.tar.gz

安装
tar xvf libzip-1.2.0.tar.gz
cd libzip-1.2.0
./configure
make && make install
执行完后并没有被系统识别,相当于Windows系统的环境变量一样,让系统识别还需要配置PKG_CONFIG_PATH,用pkg-config查看libzip.pc,发现没有输出,find查找一下,默认位置在/usr/local/lib/pkgconfig/libzip.pc然后建立链接。
[root@xcc ~]# pkg-config --list-all|grep libzip
[root@xcc ~]# find / -name libzip.pc
/root/libzip-1.2.0/libzip.pc
/usr/local/lib/pkgconfig/libzip.pc
[root@xcc ~]# ln -sf /usr/local/lib/pkgconfig/libzip.pc /usr/lib64/pkgconfig/
[root@xcc ~]# pkg-config --list-all|grep libzip
libzip libzip - library for handling zip archives
继续编译PHP,这里已经可以正常编译通过。

继续安装
make

make install

配置文件
从安装包里把配置文件拷贝到安装目录并重命名,配置文件有两个:生产环境php.ini-production和开发环境php.ini-development
[root@xcc php-7.4.30]# cp php.ini-* /usr/local/php/etc/
[root@xcc php-7.4.30]# cd /usr/local/php/etc/
[root@xcc etc]# cp php.ini-development php.ini
[root@xcc etc]# ls
php-fpm.conf.default php-fpm.d php.ini php.ini-development php.ini-production
配置系统环境变量
编辑文件vi /etc/profile在末尾添加
PATH=/usr/local/php/bin:$PATH
export PATH
使其立即生效source /etc/profile
查看版本
[root@xcc ~]# php -v
PHP 7.4.30 (cli) (built: Nov 2 2022 17:32:45) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
查看扩展
[root@xcc ~]# php -m
[PHP Modules]
bcmath
bz2
Core
ctype
curl
date
dom
filter
gd
gettext
hash
iconv
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlrpc
xmlwriter
zip
[Zend Modules]
end。
centos7离线安装PHP7的更多相关文章
- Centos7 离线安装 php7
问题:因内部管控,机器无法连接公有yum源安装php. 正常安装php7可以参考CentOS7.2 安装 PHP7.2 下面的代码也是一种方法 yum -y install libmcrypt lib ...
- CentOS7离线安装mysql5.7
下载mysql5.7,系统选择redhat,版本选择RHEL7,下载RPM Bundle后得到一个tar文件.这里得到文件mysql-5.7.25-1.el7.x86_64.rpm-bundle.ta ...
- CentOS7 离线安装mysql-5.7.16
CentOS7 离线安装mysql-5.7.16 1 . 安装新版mysql前,需将系统自带的mariadb-lib卸载 [root@slave mytmp]# rpm -qa|grep mariad ...
- CentOS7离线安装Nginx(详细安装过程)
CentOS7离线安装Nginx(详细安装过程) 1.安装gcc.g++ 下载好所需的文件后上传至服务器(下载地址:https://download.csdn.net/download/a729360 ...
- Centos7 编译安装PHP7
Centos7 编译安装PHP7 编译安装的方式可以让组件等设置更加合理,但需要你对PHP的代码及各种配置非常的熟悉,以下为大致的安装流程,大家可以参考 1.下载编译工具 yum groupinsta ...
- CentOS7离线安装MySQL8.0
CentOS7离线安装MySQL8.0 卸载软件 rpm -e --nodeps 要卸载的软件包 root@jacky zookeeper]# rpm -e --nodeps java-1.6.0-o ...
- Binlog2sql+CentOS7 离线安装
Binlog2sql+CentOS7 离线安装 目录 Binlog2sql+CentOS7 离线安装 1. 环境 2. 下载 3.1 Pip 安装 3.2 PyMySQL/mysql-replicat ...
- CentOS7编译安装php7.1配置教程详解
这篇文章主要介绍CentOS7编译安装php7.1的过程和配置详解,亲测 ,需要的朋友可以参考. 1.首先安装依赖包: yum install libxml2 libxml2-devel openss ...
- centos7.3安装php7.0
需求:在Centos7.3下搭建LNMP环境 文章转载自:http://blog.csdn.net/wszll_alex/article/details/76285324 作者:狂热森林 . 关闭防火 ...
随机推荐
- oracle 怎么查看用户对应的表空间
oracle 怎么查看用户对应的表空间? 查询用户: 查看数据库里面所有用户,前提是你是有 dba 权限的帐号,如 sys,system: select * from dba_users; 查看你能管 ...
- 二叉搜索树TREE(线段树,区间DP)
前言 线段树+区间DP题,线段树却不是优化DP的,是不是很意外? 题面 二叉搜索树是一种二叉树,每个节点都有一个权值,并且一个点的权值比其左子树里的点权值都大,比起右子树里的点权值都小. 一种朴素的向 ...
- 报错:①Tog goal specified requires a project to execute but there is no POM in this directory......②说类HelloWorld是公共的, 应在名为 HelloWorld.java 的文件中声明 public class HelloWorld......
在运行Maven的命令时,在DOS窗口里面必须把目录切换到项目的根部,要不然命令是找不到目的地. 下图是错误示范,项目在Demo02这个目录里,就必须将目录切换到Demo02下,否则DOS窗口只有飘红 ...
- Java基础——01
今日学习 2020-2-27 Java多态 多态性格式 /* 代码中体现多态性 其实就是一句话:父类指向子类对象 格式: 父类名称 对象名= new 子类名称(): 或者 接口名称 对象名 = new ...
- LIKE与等式查询比较
我们知道 char 是定长类型的数据,如果数据长度小于定义的长度,会在字符串尾部加上空格.而对于空格的处理,对于等式匹配,或length等,会忽略空格.而对于like 或模式匹配,空格不能忽略. 一. ...
- Spring源码学习笔记12——总结篇,IOC,Bean的生命周期,三大扩展点
Spring源码学习笔记12--总结篇,IOC,Bean的生命周期,三大扩展点 参考了Spring 官网文档 https://docs.spring.io/spring-framework/docs/ ...
- 【Vue学习笔记】—— vuex的语法 { }
学习笔记 作者:o_Ming vuex Vuex ++ state ++ (用于存储全局数据) 组件访问 state 中的全局数据的方式1: this.$store.state.全局数据 组件访问 s ...
- C#,使用FindWindow和FindWindowEx查找窗体和控件
函数: // Find Window // 查找窗体 // @para1: 窗体的类名 例如对话框类是"#32770" // @para2: 窗体的标题 例如打开记事本 标题是&q ...
- day39-网络编程01
Java网络编程01 1.网络相关的概念 1.1网络通信和网络 网络通信 概念:两台设备之间通过网络实现数据传输 网络通信:将数据通过网络从一台设备传输到另一台设备 java.net包下提供了一系列的 ...
- 微信小程序-坑,wxml里wx:if 判断 数字 是否在一个数组中。
<view wx:if="{{item.index}} in {{vote_list}}"> 已赞 <image src="/static/zan_y. ...