zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    JMeter笔记:关于时间函数_time的简单使用(时间戳、时间)
    搜索&分页功能主要测试点
    JMeter笔记十五:逻辑控制器之临界部分控制器(Critical Section Controller)
    JMeter笔记十四:Beanshell取样器
    Python3+RobotFramework自动化测试十:接口测试
    Github Pages中的Octopress框架搭建个人博客(下)
    pycharm破解
    计算机网络 UDP协议
    计算机网络 路由器协议
    计算机网络 TCP协议
  • 原文地址:https://www.cnblogs.com/guantou1992/p/12618443.html
Copyright © 2011-2022 走看看