From cb20925465193d2cc278400c8c2203ac8e9deef8 Mon Sep 17 00:00:00 2001 From: NewName Date: Wed, 21 Aug 2024 12:48:39 +0800 Subject: [PATCH] Update php.sh --- web/php.sh | 119 +++++++++++++++++++++++++++-------------------------- 1 file changed, 61 insertions(+), 58 deletions(-) diff --git a/web/php.sh b/web/php.sh index 49b86de..6cc192c 100644 --- a/web/php.sh +++ b/web/php.sh @@ -1,66 +1,69 @@ #!/bin/bash -# php安装脚本 -# 输出颜色 -_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"; } - -_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|ubuntu" /etc/issue || grep -Eqi "debian|ubuntu" /proc/version; then - OS="debian" - else - _error "不支持的操作系统。本脚本仅支持 Debian 或 Ubuntu。" - fi -} - -# 检查操作系统 -_check_os - -# 设置 PATH -export PATH=$PATH:/usr/bin:/usr/sbin - -# 选择 PHP 版本 -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 版本 = $(_green "${php_version}")" -_info "---------------------------" - -_info "开始安装 PHP" - -# 安装 PHP 和扩展 -_error_detect apt update -_error_detect apt -yq 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 +# 检查操作系统并设置 PHP 仓库 +if grep -Eqi "debian" /etc/issue || grep -Eqi "debian" /proc/version; then + OS="debian" + # Debian 系统设置 PHP 仓库 + 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 grep -Eqi "ubuntu" /etc/issue || grep -Eqi "ubuntu" /proc/version; then + OS="ubuntu" + # Ubuntu 系统设置 PHP PPA + sudo apt update -q + sudo apt install -yq software-properties-common + sudo add-apt-repository -y ppa:ondrej/php else - _error_detect add-apt-repository -yq ppa:ondrej/php + echo "不支持的操作系统。本脚本仅支持 Debian 或 Ubuntu。" + exit 1 fi -# 安装 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 +# 更新源列表并安装必要的软件包 +sudo apt update -q +sudo apt install -yq mariadb-server php8.1 php8.1-mysql php8.1-fpm php8.1-curl php8.1-cgi php8.1-mbstring \ + php8.1-xml php8.1-gd php8.1-xmlrpc php8.1-soap php8.1-intl php8.1-opcache php8.1-zip wget unzip socat curl caddy -_info "PHP 安装完成" +# 获取 PHP 版本信息 +PHP_VERSION=$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;') +PHP_INI_FILE="/etc/php/${PHP_VERSION}/fpm/php.ini" +OPCACHE_FILE_CACHE_DIR="/var/cache/opcache" -exit 0 +# 创建 OPcache 缓存目录并设置权限 +if [ ! -d "$OPCACHE_FILE_CACHE_DIR" ]; then + echo -e "\033[32m创建 OPcache 缓存目录...\033[0m" + sudo mkdir -p "$OPCACHE_FILE_CACHE_DIR" + sudo chown -R www-data:www-data "$OPCACHE_FILE_CACHE_DIR" +fi + +# 配置 OPcache +if ! grep -q "^opcache.enable=1" "$PHP_INI_FILE"; then + echo -e "\033[32m启用 OPcache 扩展...请稍等...\033[0m" + sudo tee -a "$PHP_INI_FILE" > /dev/null < /dev/null +fi + +# 重启 PHP-FPM 服务 +sudo systemctl restart php${PHP_VERSION}-fpm + +echo -e "\033[32mPHP 配置已更新并重启 PHP-FPM 服务。\033[0m"