diff --git a/web/php.sh b/web/php.sh index 5a95db7..49b86de 100644 --- a/web/php.sh +++ b/web/php.sh @@ -1,133 +1,66 @@ #!/bin/bash +# php安装脚本 # 输出颜色 -_red() { - printf '\033[1;31;31m%b\033[0m' "$1" -} +_red() { printf '\033[1;31;31m%b\033[0m\n' "$1"; } +_green() { printf '\033[1;31;32m%b\033[0m\n' "$1"; } +_yellow() { printf '\033[1;31;33m%b\033[0m\n' "$1"; } -_green() { - printf '\033[1;31;32m%b\033[0m' "$1" -} - -_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 -} +_info() { printf "%s\n" "$1"; } +_error() { _red "$1"; exit 2; } +_exists() { command -v "$1" >/dev/null 2>&1; } +_error_detect() { "$@" || _error "命令执行失败: $*"; } _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" - 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 _error "不支持的操作系统。本脚本仅支持 Debian 或 Ubuntu。" fi } -# 检查脚本是否以 root 用户身份运行 -[ ${EUID} -ne 0 ] && _red "此脚本必须以 root 用户身份运行!" && exit 1 - # 检查操作系统 _check_os +# 设置 PATH +export PATH=$PATH:/usr/bin:/usr/sbin + # 选择 PHP 版本 -while true; do - _info "请选择一个 PHP 版本:" - _info "$(_green 1). PHP 7.4" - _info "$(_green 2). PHP 8.0" - _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 +php_versions=("7.4" "8.0" "8.1" "8.2" "8.3") +_info "请选择一个 PHP 版本:" +for i in "${!php_versions[@]}"; do + _info "$(_green "$(($i + 1))"):PHP ${php_versions[$i]}" done +read -r -p "[默认 4] 请输入一个数字: " php_version +php_version=${php_versions[$((php_version-1))]:-8.2} + _info "---------------------------" -_info "PHP 版本 = $(_red "${php_ver}")" +_info "PHP 版本 = $(_green "${php_version}")" _info "---------------------------" _info "开始安装 PHP" # 安装 PHP 和扩展 -if [ "${OS}" == "debian" ] || [ "${OS}" == "ubuntu" ]; then - _error_detect "apt-get update" - _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 update +_error_detect apt -yq install lsb-release ca-certificates curl - _error_detect "apt-get update" - - # 安装 PHP 及常用扩展 - _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" - _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 安装完成" +# 添加 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 else - _error "不支持的操作系统。本脚本仅支持 Debian 或 Ubuntu。" + _error_detect add-apt-repository -yq ppa:ondrej/php fi -exit 0 \ No newline at end of file +# 安装 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