def find_alt_php_versions(): """ Returns list of installed alt-php versions and their base directories
:rtype: list :return: List of version (e.g. 44, 55) and base directory tuples """ php_versions = [] for php_dir in glob.glob("/opt/alt/php[0-9][0-9]"): php_versions.append((php_dir[-2:], php_dir)) php_versions.sort() return php_versions
def configure_alt_php(mode, php_ver, php_path): """ :rtype: bool :return: If success returns True, otherwise False """ try: cp_name = cpapi.getCPName() if cp_name == "Plesk": if not os.path.exists("/usr/local/psa/bin/php_handler"): raise Exception("/usr/local/psa/bin/php_handler not exist.") if mode == "install": plesk_add_php_handler('fastcgi', php_ver, php_path) plesk_add_php_handler('cgi', php_ver, php_path) if os.path.exists("/etc/init.d/alt-php%s-fpm" % php_ver) or os.path.exists("/usr/lib/systemd/system/alt-php%s-fpm.service" % php_ver): plesk_add_php_handler('fpm', php_ver, php_path) elif mode == "uninstall": plesk_remove_php_handler('fastcgi', php_ver) plesk_remove_php_handler('cgi', php_ver) if os.path.exists("/etc/init.d/alt-php%s-fpm" % php_ver) or os.path.exists("/usr/lib/systemd/system/alt-php%s-fpm.service" % php_ver): plesk_remove_php_handler('fpm', php_ver) else: return plesk_check_php_handler('fastcgi', php_ver) and plesk_check_php_handler('cgi', php_ver) and plesk_check_php_handler('fpm', php_ver) except Exception as e: logging.info(e) return False
def main(sys_args): try: opts, args = getopt.getopt(sys_args, "m:p:v", ["mode=", "php=", "verbose"]) except getopt.GetoptError as e: sys.stderr.write("cannot parse command line arguments: {0}".format(e)) return 1 verbose = False mode = "check" php_versions = [] for opt, arg in opts: if opt in ("-m", "--mode"): if arg not in MODES: # use check mode mode = "check" else: mode = arg if opt in ("-p", "--php"): if not os.path.isdir("/opt/alt/php%s" % arg): sys.stderr.write("unknown PHP version {0}".format(arg)) return 1 php_versions.append((arg, "/opt/alt/php%s" % arg)) if opt in ("-v", "--verbose"): verbose = True log = configure_logging(verbose)
if not php_versions: php_versions = find_alt_php_versions() log.info(u"installed alt-php versions are\n%s" % "\n".join(["\t alt-php%s: %s" % i for i in php_versions])) for ver, path in php_versions: configure_alt_php(mode, ver, path)
if __name__ == "__main__": sys.exit(main(sys.argv[1:]))