VM-CentOS-8+Linux8中编译安装php-8.0.9无错详解教程
文章目录
-
- VM-CentOS-8+Linux8中编译安装php-8.0.9无错详解教程
- @[toc]
-
-
- P-01) 系统 &环境
- P-02) 安装前准备
- P-03) 编译安装【oniguruma】
- P-04) 编译安装【libzip】
- P-05) 安装依赖
- P-06) 编译安装【libxml2】
- P-07) 编译安装【libmcrypt】
- P-08) 编译安装【mhash】
- P-09) 编译安装【mcrypt】
- P-10) 编译安装【 jpeg6】
- P-11) 编译安装【libpng】
- P-12) 编译安装【freetype】
- P-13) 编译安装【php-8.0.9】
- P-14) 配置【php】环境变量
- P-15) 配置【Apache】以支持【php】
- P-16) 配置 【Nginx】 以支持 【php】
- P-17) 配置【php-fpm】启动
- P-18) 配置 【php-fpm】启动脚本
- P-19) 配置 【php-fpm】至【system】启动
- P-20) 脚本 & 进程启停 & 重载 【php-fpm】
- P-21) 设置 【php-fpm】开机自启动
- P-22)安装【PHP】扩展 & 模块
- P-23)编译安装 【memcached】服务:
- P-24)编译安装【Redis】服务
- P-25)开启【PHP】加速缓存模块:
- P-26)安装【PHP】依赖管理工具【Composer】
文章目录
-
- VM-CentOS-8+Linux8中编译安装php-8.0.9无错详解教程
- @[toc]
-
-
- P-01) 系统 &环境
- P-02) 安装前准备
- P-03) 编译安装【oniguruma】
- P-04) 编译安装【libzip】
- P-05) 安装依赖
- P-06) 编译安装【libxml2】
- P-07) 编译安装【libmcrypt】
- P-08) 编译安装【mhash】
- P-09) 编译安装【mcrypt】
- P-10) 编译安装【 jpeg6】
- P-11) 编译安装【libpng】
- P-12) 编译安装【freetype】
- P-13) 编译安装【php-8.0.9】
- P-14) 配置【php】环境变量
- P-15) 配置【Apache】以支持【php】
- P-16) 配置 【Nginx】 以支持 【php】
- P-17) 配置【php-fpm】启动
- P-18) 配置 【php-fpm】启动脚本
- P-19) 配置 【php-fpm】至【system】启动
- P-20) 脚本 & 进程启停 & 重载 【php-fpm】
- P-21) 设置 【php-fpm】开机自启动
- P-22)安装【PHP】扩展 & 模块
- P-23)编译安装 【memcached】服务:
- P-24)编译安装【Redis】服务
- P-25)开启【PHP】加速缓存模块:
- P-26)安装【PHP】依赖管理工具【Composer】
-
P-01) 系统 &环境
运行环境:实验室虚拟环境
系统型号:CtenOS-8.4-x86_64
Linux版本:linux-8-x86_64
CPU&内存:4H + 4GB
系统内核:
uname -r
4.18.0-305.10.2.el8_4.x86_64
P-02) 安装前准备
- 1 已安装
Apache
,查看安装的版本。源码编译安装【Apache】的方法请参阅……
apachectl -v
#Server version: Apache/2.4.37 (centos)
#Server built: May 20 2021 04:33:06
#或者...
httpd -v
- 2 已安装
Nginx
,查看安装的版本。源码编译安装【Ninux】的方法请参阅……
nginx -v
#nginx version: nginx/1.20.1
- 3 已安装
MySQL
,查看安装的版本。源码编译安装【MySQL】的方法请参阅……
mysql -V
#mysql Ver 8.0.25 for Linux on x86_64 (Source distribution)
#或者...登录数据库...
status
- 4 更新
CentOS-8*
软件包:
dnf update
yum install epel-release
- 5 新建
php
源码包 & 扩展文件存放目录:
mkdir lanmpp
cd /root/lanmpp
mkdir php8
cd php8/
P-03) 编译安装【oniguruma】
- 安装
oniguruma
所需的工具&依赖:
yum -y install autoconf automake libtool make gcc gcc-c++ vim wget
- 下载
oniguruma
:
wget https://github.com/kkos/oniguruma/archive/refs/tags/v6.9.7.1.tar.gz -O oniguruma-6.9.7.1.tar.gz
- 编译安装
oniguruma
:
tar -xf oniguruma-6.9.7.1.tar.gz
rm -rf oniguruma-6.9.7.1.tar.gz
cd oniguruma*/
./autogen.sh && ./configure --prefix=/usr
make && make install
P-04) 编译安装【libzip】
- 安装
libzip-devel
不用指定安装目录:
cd ..
wget https://libzip.org/download/libzip-1.8.0.tar.gz
tar -xvf libzip-1.8.0.tar.gz
rm -rf libzip-1.8.0.tar.gz
cd libzip*/
- 由于是最新版的
libzip
,需要用cmake
的方式才能编译安装,所以,得先安装上cmake3
:
yum -y install cmake3
#===安装后cmake3的版本确认===#
cmake --version
cmake version 3.20.2
- 使用
cmake3
编译安装libzip
:
mkdir build && cd build
cmake3 ..
make && make install
- 配置
libzip
环境变量
echo export PATH=$PATH:/usr/local/bin/zipcmp >>/etc/profile
source /etc/profile # 让配置生效...
P-05) 安装依赖
yum -y install bzip2 bzip2-devel curl curl-devel nano net-tools lsof gmp-devel libcurl libcurl-devel libXpm-devel libc-client-devel libicu-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel libicu-devel libxslt libxslt-devel libxml2-devel libedit openldap openldap-devel openssl openssl-devel postgresql-devel net-snmp-devel readline readline-devel unixODBC-devel mysql-devel sqlite-devel
- 说明:有几包扩展主包采用的编译安装,所以,在依赖安装列表中没有显示,若你不采取编译安装,则需要添加进去…
P-06) 编译安装【libxml2】
cd /root/lnampp/php8
wget ftp://xmlsoft.org/libxml2/libxml2-2.9.12.tar.gz
tar -xvf libxml2-2.9.12.tar.gz
rm -rf libxml2-2.9.12.tar.gz
cd libxml2*/
./configure --prefix=/usr/local/libxml2/
make && make install
P-07) 编译安装【libmcrypt】
cd ..
wget https://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
tar -xvf libmcrypt-2.5.8.tar.gz
rm -rf libmcrypt-2.5.8.tar.gz
cd libmcrypt*/
./configure --prefix=/usr/local/libmcrypt/
make && make install
- 安装【libltdl】源码就在【libmcrypt】源码目录中:
cd libltdl/
./configure --enable-ltdl-install
make && make install
P-08) 编译安装【mhash】
- 不用指定安装目录
cd /root/lnampp/php8
wget https://jztkft.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz
tar -xf mhash-0.9.9.9.tar.gz
rm -rf mhash-0.9.9.9.tar.gz
cd mhash*/
./configure
make && make install
P-09) 编译安装【mcrypt】
cd ..
wget https://udomain.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz
tar -xvf mcrypt-2.6.8.tar.gz
rm -rf mcrypt-2.6.8.tar.gz
cd mcrypt*/
export LD_LIBRARY_PATH=/usr/local/libmcrypt/lib:/usr/local/lib # 环境变量设置
./configure --with-libmcrypt-prefix=/usr/local/libmcrypt
make && make install
- 说明:环境变量设置:【LD_LIBRARY_PATH】用于指定【libmcrypt】和【mhash】的库的位置
P-10) 编译安装【 jpeg6】
cd ..
wget http://ijg.org/files/jpegsrc.v9d.tar.gz
tar -xvf jpegsrc.v9d.tar.gz
rm -rf jpegsrc.v9d.tar.gz
cd jpeg-9d/
./configure --prefix=/usr/local/jpeg9/ --enable-shared --enable-static
make && make install
- 说明:【–enable-shared】与【–enable-static】参数,分别为建立共享库和静态库使用的【libtool】。
P-11) 编译安装【libpng】
cd ..
wget https://nav.dl.sourceforge.net/project/libpng/libpng16/1.6.37/libpng-1.6.37.tar.gz
tar -xvf libpng-1.6.37.tar.gz
rm -rf libpng-1.6.37.tar.gz
cd libpng*/
./configure --prefix=/usr/local/libpng
make && make install
P-12) 编译安装【freetype】
cd ..
wget https://bigsearcher.com/mirrors/nongnu/freetype/freetype-2.11.0.tar.gz
tar -xvf freetype-2.11.0.tar.gz
rm -rf freetype-2.11.0.tar.gz
cd freetype*/
./configure --prefix=/usr/local/freetype/
make && make install
P-13) 编译安装【php-8.0.9】
- 下载 & 解压
php
源码包:
cd ..
wget https://www.php.net/distributions/php-8.0.9.tar.gz
tar -xvf php-8.0.9.tar.gz
rm -rf php-8.0.9.tar.gz
cd php*/
- 预编译 & 生成配置(
CentOS
原装镜像源下),应该会报错…
configure: error: Package requirements (libedit) were not met:
//配置:错误:未满足程序包要求(libedit):
- 之前是有安装
libedit
的,只是其扩展包libedit-devel
,由于系统源中无此包,只能通过国外镜像来解决…
dnf --enablerepo=powertools install libedit-devel
- 预编译 & 生成配置
php
:
./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-config-file-scan-dir=/usr/local/php/etc/conf.d \
--with-config-file-scan-dir=/usr/local/php/etc/php.d \
--with-libxml-dir=/usr/local/libxml2 \
--with-jpeg-dir=/usr/local/jpeg9 \
--with-png-dir=/usr/local/libpng \
--with-freetype-dir=/usr/local/freetype \
--with-mcrypt=/usr/local/libmcrypt \
--with-pdo-mysql=/usr/local/mysql \
--with-pdo-mysql=mysqlnd