问题描述
`
经常遇到编译安装php或扩展的安装,虽然打了镜像,但也会有升级php的需求,或安装扩展,所以就记录整理了 php安装脚本,以及常用扩展的安装,以此来简化自己的工作。
shell脚本编译安装 php及多个扩展
脚本中大多数php扩展下载地址:http://pecl.php.net,点击Search Packages进行搜索
脚本在 rocky linux 9.3系统机器上装的,也已经用于生产环境,之前写过手动一步步安装,这次整理成 shell脚本,并增加了很多扩展安装
1.shell脚本
#!/bin/bash
#auth:zhpengfei
#date:2024-03-28
# 全局变量
PROJECT_HOME="/usr/local/data"
VERSION="php-8.3.3"
PHP_HOME="$PROJECT_HOME/$VERSION"
PHP_CONFIG="$PHP_HOME/etc"
SOFT_HOME="$PROJECT_HOME/soft"
PHP_PKG="$SOFT_HOME/$VERSION"
PHP_URL="http://cn2.php.net/distributions/$VERSION.tar.gz"
USER="www"
GROUP="www"
# 准备环境
prepare_environment() {
useradd $USER -d /usr/local/data/www -s /sbin/nologin
mkdir -p "$SOFT_HOME"
}
prepare_environment
# 定义函数来检查命令执行结果
check_command_result() {
if [ $? -ne 0 ]; then
echo "Error: $1 failed"
exit 1
fi
}
# 下载并安装 PHP
install_php() {
cd "$SOFT_HOME"
# 下载 PHP
wget -nc "$PHP_URL"
tar zxf "${VERSION}.tar.gz"
# 安装依赖
install_dependencies
# 编译安装 PHP
compile_install_php
# 修改 PHP 配置文件
configure_php
}
# 安装 PHP 依赖
install_dependencies() {
echo "Installing dependencies..."
yum install -y wget gcc gcc-c++ autoconf automake libtool make libxml2 libxml2-devel openssl openssl-devel sqlite-devel libpng libpng-devel libpsl libpsl-devel libicu-devel libcurl-devel gmp-devel --enablerepo=devel oniguruma-devel net-snmp-devel epel-release openldap openldap-devel
cp -frp /usr/lib64/libldap* /usr/lib/
}
# 编译安装 PHP
compile_install_php() {
echo "Compiling and installing PHP..."
cd "${SOFT_HOME}/${VERSION}"
./configure --prefix=$PHP_HOME \
--with-config-file-path=$PHP_CONFIG \
--enable-fpm \
--with-fpm-user=$USER \
--with-fpm-group=$GROUP \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-mysqlnd-compression-support \
--with-zlib \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-mbregex \
--enable-mbstring \
--enable-intl \
--enable-ftp \
--enable-gd-jis-conv \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--enable-soap \
--with-gettext \
--enable-fileinfo \
--enable-opcache \
--with-pear \
--with-ldap=shared \
--without-gdbm \
--with-curl \
--enable-ctype
# 检查 configure 是否成功
check_command_result "Configure"
make -j 4
# 检查 make 是否成功
check_command_result "Make"
make install
# 检查 make 是否成功
check_command_result "Make install"
ln