php扩展模块安装的脚本

Posted 罐头1992

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php扩展模块安装的脚本相关的知识,希望对你有一定的参考价值。

有些在源码里面有的扩展,需要一个个安装很麻烦,写个脚本一键安装

#!/usr/bin/python
# -*- coding: utf-8 -*-
# 2020-3-20
# author:hhh

import os
import sys
import subprocess
import signal

install_phpmode_list = [curl,wddx,bcmath,sysvsem,sysvshm]

def syscmd(cmd_line):
    if len(cmd_line) <= 0:
        return -1,None
    try:
        p = subprocess.Popen(cmd_line, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        try:
            outs, errs = p.communicate()
            retval = p.returncode
        except subprocess.TimeoutExpired:
            os.kill(p.pid, signal.SIGKILL)
            outs, errs = p.communicate()
            retval = p.returncode
        return retval, outs.decode("utf-8", "replace"), errs.decode()
    except Exception as e:
        return -1, None, None

def yum_install(rpm):
    check_rpm = rpm -qa |grep -w %s % rpm
    ret,output,err = syscmd(check_rpm)
    if ret == 1:
        install_cmd = yum -y install %s % rpm
        ret,output,err = syscmd(install_cmd)
        if ret == 0:
            print(install %s success... % rpm)
            return True
        else:
            print(install %s faild... % rpm)
            sys.exit(1)
    else:
        print(skip install %s  % rpm)
        return True

def download_source(version):
    wegt = wget -P /usr/local/src http://www.php.net/distributions/%s.tar.gz%version
    ret1, output1, err1 = syscmd(wegt)
    if ret1 == 0:
        print(wget %s success!%version)
        tar = tar zxvf /usr/local/src/%s.tar.gz%version
        ret2, output2, err2 = syscmd(tar)
        if ret2 == 0:
            print(tar zxvf %s success!%version)
        else:
            print(tar failed!,err2)
            sys.exit(1)
    else:
        print(wget failed!,err1)
        sys.exit(1)


def php_mod(install_php_mod):
    ret1, output1, err1 = syscmd(/usr/local/php72/bin/php -m | grep -w %s%install_php_mod)
    ret2, output2, err2 = syscmd(ls /usr/local/src/php-7.2.11/ext |grep -w %s %install_php_mod)
    if ret1 == 0 and %s%install_php_mod in output1:
        print(php mode %s is installed!%install_php_mod)
    elif ret1 == 1 and ret2 == 0 and %s%install_php_mod in output2:
        os.chdir(/usr/local/src/php-7.2.11/ext/%s%install_php_mod)
        phpize = /usr/local/php72/bin/phpize
        ret3, output3, err3 = syscmd(phpize)
        if ret3 == 0:
            configure = ./configure --with-php-config=/usr/local/php72/bin/php-config && make && make install
            ret4, output4, err4 = syscmd(configure)
            if ret4 == 0:
                echo_so ="echo ‘extension = %s.so
‘ >>/usr/local/php72/etc/php.ini"%install_php_mod
                ret5, output5, err5 = syscmd(echo_so)
                if ret5 == 0:
                    print(install %s success!%install_php_mod)
                else:
                    print(echo failed!,err5)
                    sys.exit(1)
            else:
                print(configure failed!,err4)
                sys.exit(1)
        else:
            print(phpize failed,err3)
            sys.exit(1)
    else:
        print(%s php mode not in source!%install_php_mod)

def main():
    yum_install(php72)
    yum_install(libxml2)
    yum_install(libxml2_devel)
    download_source(php-7.2.11)
    for install_php_mod in install_phpmode_list:
        php_mod(install_php_mod)


if __name__ == __main__:
    main()

 

以上是关于php扩展模块安装的脚本的主要内容,如果未能解决你的问题,请参考以下文章

PHP扩展模块安装

Laravel基本使用

PHP扩展模块安装

PHP动态扩展模块安装

88.PHP扩展模块安装

PHP扩展模块的安装