PHP源码安装脚本

2023-11-08

#!/bin/bash
#Author Mr.Wu
#PHP安装脚本
#WARNING!!!如网速不好,需上传php-8.1.9.tar.gz包
#2023-3-2 22:55:55
########################################
#定义变量
dep_pack="epel-release make apr* php-mcrypt libmcrypt libmcrypt-devel autoconf automake curl curl-devel gcc gcc-c++  openssl* gd kernel keyutils patch perl re2c kernel-headers compat* mpfr cpp glibc libgomp libstdc++-devel keyutils-libs-devel libcom_err-devel libsepol-devel libselinux-devel krb5-devel zlib zlib-devel libXpm* freetype gd libjpeg* libpng*  libtool* libxml2 libxml2-devel patch libcurl-devel bzip2-devel freetype-devel php-xmlreader php-xmlwriter php-session libjpeg-devel sqlite-devel libwebp expat-devel"
dec_pack="--prefix=/usr/local/php8.1.9 --with-config-file-path=/etc --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-gd --with-iconv -enable-gd --with-iconv --with-expat --with-mhash --with-config-file-scan-dir=/usr/local/php8.1.9/etc/ --with-bz2 --with-zlib --with-jpeg --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --with-zip --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-freetype  --enable-bcmath --enable-ctype"
dev_dir="/dev/null"
php_log="$(pwd)/php-install.log"
src_dir="/usr/local/src"
php_tar="$(pwd)/php-8.1.9.tar.gz"
php_dir="/usr/local/php8.1.9"
aaa="/usr/local/php8.1.9/etc/php-fpm.d/www.conf"
messages=("检查PHP安装包是否存在" "下载PHP安装包" "安装依赖包" "安装oniguruma" "解压PHP安装包" "PHP预编译" "PHP编译" "PHP编译安装" "生成配置文件" "PHP启动管理")
colour=(31 34)
result=("失败!!!" "成功!!!")
########################################
#定义函数
delimiter(){        #定义分隔符
    echo -e "\033[32;1m※※※※※※※※※※※※※※※※※※※※※※※※※※\033[0m"
}
echoinfo(){        #定义输入选项
    echo -e "\033[35;1m#$1\033[0m"
}
echoresult(){        #定义输出选项
    echo -e "\033[$1;1m$2$3\033[0m"
}
if_test(){        #if语句判断
    if [ $? -eq 0 ];then
        echoresult ${colour[1]} $1 ${result[1]}
    else
        echoresult ${colour[0]} $1 ${result[0]}
        exit
    fi
}
get_tar(){        #下载PHP安装包
    delimiter | tee -a $php_log
    echoinfo ${messages[1]} | tee -a $php_log
    wget https://www.php.net/distributions/php-8.1.9.tar.gz &> $dev_dir
    sleep 3
    if_test ${messages[1]} | tee -a $php_log
}
check_tar(){        #检查PHP安装包是否存在
    delimiter | tee -a $php_log
    echoinfo ${messages[0]} | tee -a $php_log
    if [ ! -f $php_tar ];then
        echo -e "\033[31;1m#PHP安装包不存在,请下载!!!\033[0m" | tee -a $php_log
        get_tar
    else
        echo -e "\033[34;1m#PHP安装包已经存在,请解压安装!!!\033[0m" | tee -a $php_log
    fi
}
dep_tar(){        #安装依赖包
    delimiter | tee -a $php_log
    echoinfo ${messages[2]} | tee -a $php_log
    yum -y install $dep_pack &> $dev_dir
    sleep 3
    if_test ${messages[2]} | tee -a $php_log
}
ins_onigur(){    #安装oniguruma
    delimiter | tee -a $php_log
    echoinfo ${messages[3]} | tee -a $php_log
    wget https://rpms.remirepo.net/enterprise/7/remi/x86_64/oniguruma5php-6.9.7.1-1.el7.remi.x86_64.rpm --no-check-certificate &> $dev_dir
    wget https://rpms.remirepo.net/enterprise/7/remi/x86_64/oniguruma5php-devel-6.9.7.1-1.el7.remi.x86_64.rpm --no-check-certificate &> $dev_dir
    rpm -ivh oniguruma5php-6.9.7.1-1.el7.remi.x86_64.rpm &> $dev_dir
    rpm -ivh oniguruma5php-devel-6.9.7.1-1.el7.remi.x86_64.rpm &> $dev_dir
#    yum install -y oniguruma5php-* &> $dev_dir
    sleep 3
    if_test ${messages[3]} | tee -a $php_log
}
dec_tar(){        #解压PHP安装包
    delimiter | tee -a $php_log
    echoinfo ${messages[4]} | tee -a $php_log
    tar -zxvf $php_tar -C $src_dir/ &> $dev_dir
    sleep 3
    if_test ${messages[4]} | tee -a $php_log
}
precom(){        #PHP预编译
    delimiter | tee -a $php_log
    echoinfo ${messages[5]} | tee -a $php_log
    cd $src_dir/php-8.1.9/
    ./configure $dec_pack &>> $php_log
    sleep 3
    if_test ${messages[5]} | tee -a $php_log
}
comp(){        #PHP编译
    delimiter | tee -a $php_log
    echoinfo ${messages[6]} | tee -a $php_log
    cd $src_dir/php-8.1.9/
    make -j `grep "processor" /proc/cpuinfo | wc -l` &>> $php_log
    sleep 3
    if_test ${messages[6]} | tee -a $php_log
}
com_ins(){    #PHP编译安装
    delimiter | tee -a $php_log
    echoinfo ${messages[7]} | tee -a $php_log
    cd $src_dir/php-8.1.9/
    make install &>> $php_log
    sleep 3
    if_test ${messages[7]} | tee -a $php_log
}
gen_profile(){    #生成配置文件
    delimiter | tee -a $php_log
    echoinfo ${messages[8]} | tee -a $php_log
    useradd -M -s /sbin/nologin nginx &>> $php_log
    cd $php_dir/etc/
    cp php-fpm.conf.default php-fpm.conf
    cp $src_dir/php-8.1.9/php.ini-production $php_dir/etc/php.ini
    cp $php_dir/etc/php-fpm.d/www.conf.default $aaa
    sed -i "/;listen.owner = nobody/c \;listen.owner = nginx" $aaa
    sed -i "/;listen.group = nobody/c \;listen.group = nginx" $aaa
    sed -i "/user = nobody/c \user = nginx" $aaa
    sed -i "/group = nobody/c \group = nginx" $aaa
#    sed -i "/            index  index.html index.htm;/c \            index  index.php index.html index.htm;" /usr/local/nginx/conf/nginx.conf
    sleep 3
    if_test ${messages[8]} | tee -a $php_log
}
set_start(){    #PHP启动管理
    delimiter | tee -a $php_log
    echoinfo ${messages[9]} | tee -a $php_log
    cd
    cp $src_dir/php-8.1.9/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
    cd
    chmod a+x /etc/init.d/php-fpm
    chkconfig --add php-fpm &> $dev_dir
    chkconfig php-fpm on &> $dev_dir
    /etc/init.d/php-fpm start &> $dev_dir
    netstat -antup | grep php-fpm &>> $php_log
    ps -ef | grep grep php-fpm &>> $php_log
    /etc/init.d/php-fpm stop &> $dev_dir
    systemctl restart php-fpm &>> $php_log
    netstat -antup | grep php-fpm &>> $php_log
    ps -ef | grep grep php-fpm &>> $php_log
    sleep 3
    if_test ${messages[9]} | tee -a $php_log
}
########################################
echo "################BEGIN!!!$(date "+%F %T")################" | tee -a $php_log
#调用函数
check_tar
wait
dep_tar
wait
ins_onigur
wait
dec_tar
wait
precom
wait
comp
wait
com_ins
wait
gen_profile
wait
set_start
wait
echo "################END!!!$(date "+%F %T")################" | tee -a $php_log
########################################
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP源码安装脚本 的相关文章

  • PHP 中的 MongoDB - 如何将项目插入集合中的数组中?

    这必须很容易 但我似乎无法弄清楚 假设我有一个集合users这是集合中的第一项 id ObjectId 4d8653c027d02a6437bc89ca name Oscar Godson email email protected cdn
  • Laravel 集成测试:如何断言一个 URL 已被调用但另一个 URL 没有

    我想测试一个向某个 URL 发出请求的控制器 例如 http example com api say hello 但它不会向另一个 URL 发出请求 例如 http example com api say bye bye 我想测试的控制器功
  • 如何在 Python 中包含 PHP 脚本?

    我有一个 PHP 脚本 news generator php 当我包含它时 它会抓取一堆新闻项并打印它们 现在 我在我的网站 CGI 中使用 Python 当我使用 PHP 时 我在 新闻 页面上使用了这样的内容 为了简单起见 我删掉了这个
  • 为什么我不能在 TCPDF 表中使用 č,ć,đ 图表?

    我正在为我的网站构建一个 tcpdf 文件 该 tcpdf 文件中有一个包含一些数据的表格 但我无法使该章程正常工作 对于编码 我使用 windows 1250 宪章女巫不起作用 我已经尝试过 utf 8 但仍然没有得到这个章程 tcpdf
  • facebook php - 如何获取专辑封面照片

    我需要使用 PHP SDK Facebook 获取专辑封面照片 我尝试 https graph facebook com ALBUM ID picture type album 但我得到默认图像 例如 获取用户 https graph fa
  • 在值中包含换行符

    我有一个 Word 模板 其中 php 代码中定义了值 在PHP代码中 document gt setValue Value1 value1 在word模板中 Value1 如何将包含两个值之间的断线的值包含在单词的值中 Replace n
  • PHP 绑定“bigint”数据类型(MySQLi 准备好的语句)

    studentId 57004542323382 companyOfferId 7 sql INSERT INTO studentPlacement companyOfferId studentId VALUES if stmt db gt
  • 如何使用 Facebook SDK API 为页面/网址“点赞”?

    我正在使用这段代码 facebook gt api me likes post array url gt http www google com 我收到以下错误 Fatal error Uncaught OAuthException 200
  • zip 文件的校验和

    我目前正在开发一个工具 它上传一组文件 然后使用 md5 校验和将文件与上一批上传的文件进行比较 并告诉您哪些文件已更改 对于常规文件 这工作正常 但某些上传的文件是 zip 存档 即使其中的文件相同 它们几乎总是会发生变化 有没有一种方法
  • 为什么这会返回资源 id #2? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • 使用 php 在多维数组中按键排序[重复]

    这个问题在这里已经有答案了 可能的重复 在 PHP 中对多维数组进行排序 https stackoverflow com questions 2059255 sorting multidimensional array in php 如何在
  • 为什么验证不起作用并跳转到另一个页面?

    我写了一个customer display php来验证数据 到目前为止只有名字 但无论名字字段是否为空 网页都会跳转到customer search php并且没有更改数据库中的信息 为什么
  • 限制自己超载外部 API 的速率

    我发现了很多信息和脚本示例 展示了如何对 API 用户进行速率限制 但我无法找到任何示例来说明在施加这些限制时如何对您自己的 API 请求进行速率限制 我总是用诸如以下的代码来限制我的脚本sleep or usleep命令 但感觉这是一种低
  • Laravel 5 中的自定义验证器

    我正在将 Laravel 应用程序从 4 升级到 5 但是 我有一个自定义验证器 但无法运行 在L4中 我做了一个验证器 php文件并将其包含在全局 php using require app path validators php 我尝试
  • fgetcsv 在特定行打开?

    有没有办法使用 fgetcsv 在特定行上打开 我有一个非常大的 csv 想通过 ajax 一次运行大约 100 行 我可以轻松停止 while 循环 但如何在特定行上打开 或者这是不可能的 从第 100 行开始读取没有简单的方法 但您可以
  • 使用 PHP 的 MySQL 连接字符串

    我正在尝试通过本地计算机连接到托管在我的服务器上的数据库 我的服务器有cPanel 11 它是一个典型的共享服务器 由CentOS提供支持 安装了PHP和MySQL 准确地说 我在同一台服务器上持有经销商帐户 我想在不同帐户或域之间访问数据
  • JavaScript 验证和 PHP 验证?

    我正在使用 jquery 验证插件来验证空表单 我还应该在 PHP 中检查一下以确保 100 正确吗 或者用 javascript 验证就可以了 谢谢 您应该始终在服务器上进行验证 如果用户以某种方式不使用 Javascript 提交表单
  • phpunit测试调用其他需要mock的类方法的方法

    我正在尝试创建一个非常标准的单元测试 在其中调用一个方法并断言它的响应 但是我正在测试的方法调用同一类中的另一个方法 该方法做了一些繁重的工作 我想模拟该方法 但仍按原样执行我正在测试的方法 仅使用从调用另一种方法返回的模拟值 我简化了示例
  • 保存多对多关系,同步/附加不存在?

    我有以下两个多对多关系的模型 use Illuminate Database Eloquent Model class Permission extends Model The database table used by the mode
  • 检查 $_POST 数据

    我正在对表单进行一些垃圾邮件检查 下面的代码在我的本地主机上正常工作 如果为 true 则重定向到 google com 但是 当它在生产服务器上时却不起作用 执行脚本的其余部分并且不重定向到 Google com if POST SERV

随机推荐