Update php.sh
This commit is contained in:
143
web/php.sh
143
web/php.sh
@@ -1,133 +1,66 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
# php安装脚本
|
||||||
|
|
||||||
# 输出颜色
|
# 输出颜色
|
||||||
_red() {
|
_red() { printf '\033[1;31;31m%b\033[0m\n' "$1"; }
|
||||||
printf '\033[1;31;31m%b\033[0m' "$1"
|
_green() { printf '\033[1;31;32m%b\033[0m\n' "$1"; }
|
||||||
}
|
_yellow() { printf '\033[1;31;33m%b\033[0m\n' "$1"; }
|
||||||
|
|
||||||
_green() {
|
_info() { printf "%s\n" "$1"; }
|
||||||
printf '\033[1;31;32m%b\033[0m' "$1"
|
_error() { _red "$1"; exit 2; }
|
||||||
}
|
_exists() { command -v "$1" >/dev/null 2>&1; }
|
||||||
|
_error_detect() { "$@" || _error "命令执行失败: $*"; }
|
||||||
_yellow() {
|
|
||||||
printf '\033[1;31;33m%b\033[0m' "$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
_printargs() {
|
|
||||||
printf -- "%s" "[$(date)] "
|
|
||||||
printf -- "%s" "$1"
|
|
||||||
printf "\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
_info() {
|
|
||||||
_printargs "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
_warn() {
|
|
||||||
printf -- "%s" "[$(date)] "
|
|
||||||
_yellow "$1"
|
|
||||||
printf "\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
_error() {
|
|
||||||
printf -- "%s" "[$(date)] "
|
|
||||||
_red "$1"
|
|
||||||
printf "\n"
|
|
||||||
exit 2
|
|
||||||
}
|
|
||||||
|
|
||||||
_exists() {
|
|
||||||
command -v "$1" >/dev/null 2>&1
|
|
||||||
}
|
|
||||||
|
|
||||||
_check_os() {
|
_check_os() {
|
||||||
if grep -Eqi "debian" /etc/issue; then
|
if grep -Eqi "debian|ubuntu" /etc/issue || grep -Eqi "debian|ubuntu" /proc/version; then
|
||||||
OS="debian"
|
OS="debian"
|
||||||
elif grep -Eqi "ubuntu" /etc/issue; then
|
|
||||||
OS="ubuntu"
|
|
||||||
elif grep -Eqi "debian" /proc/version; then
|
|
||||||
OS="debian"
|
|
||||||
elif grep -Eqi "ubuntu" /proc/version; then
|
|
||||||
OS="ubuntu"
|
|
||||||
else
|
else
|
||||||
_error "不支持的操作系统。本脚本仅支持 Debian 或 Ubuntu。"
|
_error "不支持的操作系统。本脚本仅支持 Debian 或 Ubuntu。"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# 检查脚本是否以 root 用户身份运行
|
|
||||||
[ ${EUID} -ne 0 ] && _red "此脚本必须以 root 用户身份运行!" && exit 1
|
|
||||||
|
|
||||||
# 检查操作系统
|
# 检查操作系统
|
||||||
_check_os
|
_check_os
|
||||||
|
|
||||||
|
# 设置 PATH
|
||||||
|
export PATH=$PATH:/usr/bin:/usr/sbin
|
||||||
|
|
||||||
# 选择 PHP 版本
|
# 选择 PHP 版本
|
||||||
while true; do
|
php_versions=("7.4" "8.0" "8.1" "8.2" "8.3")
|
||||||
_info "请选择一个 PHP 版本:"
|
_info "请选择一个 PHP 版本:"
|
||||||
_info "$(_green 1). PHP 7.4"
|
for i in "${!php_versions[@]}"; do
|
||||||
_info "$(_green 2). PHP 8.0"
|
_info "$(_green "$(($i + 1))"):PHP ${php_versions[$i]}"
|
||||||
_info "$(_green 3). PHP 8.1"
|
|
||||||
_info "$(_green 4). PHP 8.2"
|
|
||||||
_info "$(_green 5). PHP 8.3"
|
|
||||||
read -r -p "[$(date)] 请输入一个数字: (默认 4) " php_version
|
|
||||||
[ -z "${php_version}" ] && php_version=4
|
|
||||||
case "${php_version}" in
|
|
||||||
1)
|
|
||||||
php_ver="7.4"
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
2)
|
|
||||||
php_ver="8.0"
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
3)
|
|
||||||
php_ver="8.1"
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
4)
|
|
||||||
php_ver="8.2"
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
5)
|
|
||||||
php_ver="8.3"
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
_info "输入错误!请仅输入数字 1 2 3 4 5"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
done
|
||||||
|
|
||||||
|
read -r -p "[默认 4] 请输入一个数字: " php_version
|
||||||
|
php_version=${php_versions[$((php_version-1))]:-8.2}
|
||||||
|
|
||||||
_info "---------------------------"
|
_info "---------------------------"
|
||||||
_info "PHP 版本 = $(_red "${php_ver}")"
|
_info "PHP 版本 = $(_green "${php_version}")"
|
||||||
_info "---------------------------"
|
_info "---------------------------"
|
||||||
|
|
||||||
_info "开始安装 PHP"
|
_info "开始安装 PHP"
|
||||||
|
|
||||||
# 安装 PHP 和扩展
|
# 安装 PHP 和扩展
|
||||||
if [ "${OS}" == "debian" ] || [ "${OS}" == "ubuntu" ]; then
|
_error_detect apt update
|
||||||
_error_detect "apt-get update"
|
_error_detect apt -yq install lsb-release ca-certificates curl
|
||||||
_error_detect "apt-get -y install lsb-release ca-certificates curl"
|
|
||||||
|
|
||||||
# 添加 PHP 仓库
|
|
||||||
if [ "${OS}" == "debian" ]; then
|
|
||||||
_error_detect "curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg"
|
|
||||||
echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" >/etc/apt/sources.list.d/php.list
|
|
||||||
elif [ "${OS}" == "ubuntu" ]; then
|
|
||||||
_error_detect "add-apt-repository -y ppa:ondrej/php"
|
|
||||||
fi
|
|
||||||
|
|
||||||
_error_detect "apt-get update"
|
# 添加 PHP 仓库
|
||||||
|
if [ "$OS" == "debian" ]; then
|
||||||
# 安装 PHP 及常用扩展
|
_error_detect curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
|
||||||
_error_detect "apt-get install -y php${php_ver}-fpm php${php_ver}-cli php${php_ver}-common php${php_ver}-opcache php${php_ver}-readline"
|
echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" >/etc/apt/sources.list.d/php.list
|
||||||
_error_detect "apt-get install -y php${php_ver}-bcmath php${php_ver}-gd php${php_ver}-imap php${php_ver}-mysql php${php_ver}-dba php${php_ver}-mongodb php${php_ver}-sybase"
|
|
||||||
_error_detect "apt-get install -y php${php_ver}-pgsql php${php_ver}-odbc php${php_ver}-enchant php${php_ver}-gmp php${php_ver}-intl php${php_ver}-ldap php${php_ver}-snmp php${php_ver}-soap"
|
|
||||||
_error_detect "apt-get install -y php${php_ver}-mbstring php${php_ver}-curl php${php_ver}-pspell php${php_ver}-xml php${php_ver}-zip php${php_ver}-bz2 php${php_ver}-lz4 php${php_ver}-zstd"
|
|
||||||
_error_detect "apt-get install -y php${php_ver}-tidy php${php_ver}-sqlite3 php${php_ver}-imagick php${php_ver}-grpc php${php_ver}-yaml php${php_ver}-uuid"
|
|
||||||
|
|
||||||
_info "PHP 安装完成"
|
|
||||||
else
|
else
|
||||||
_error "不支持的操作系统。本脚本仅支持 Debian 或 Ubuntu。"
|
_error_detect add-apt-repository -yq ppa:ondrej/php
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exit 0
|
# 安装 PHP 及常用扩展
|
||||||
|
_error_detect apt update
|
||||||
|
_error_detect apt install -yq \
|
||||||
|
php${php_version}-fpm php${php_version}-mysql php${php_version}-curl php${php_version}-json \
|
||||||
|
php${php_version}-cgi php${php_version}-mbstring php${php_version}-xml php${php_version}-gd \
|
||||||
|
php${php_version}-xmlrpc php${php_version}-soap php${php_version}-intl php${php_version}-opcache \
|
||||||
|
php${php_version}-zip
|
||||||
|
|
||||||
|
_info "PHP 安装完成"
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|||||||
Reference in New Issue
Block a user