检测服务器环境,实现快速部署。适用于CRMEB_PRO/多店

运行效果如图:

241b4202311271112504772.png

最近被好多人问,本来运行的好好的,突然swoole就启动不了了。

本工具为爱发电,如果工具正好解决了您的需求。我会很开心

代码如下:

"""本脚本为爱发电by:网前雨刮器
"""
import subprocess
import redef check_php_environment():def check_php_version():try:output = subprocess.check_output(['php', '-v'], stderr=subprocess.STDOUT)result = output.decode('utf-8')php_version_str = result.split('\n')[0]php_version = php_version_str.lower().split(' ')[1]if php_version.startswith('7.'):major_version, minor_version, patch_version = map(int, php_version.split('.'))if 7 <= major_version <= 7 and 1 <= minor_version <= 4:print(f"\033[32mPHP版本通过 (当前版本:{php_version})\033[0m")else:print(f"\033[31mPHP版本不通过 (当前版本:{php_version})\033[0m")else:print(f"\033[31mPHP版本不通过 (当前版本:{php_version})\033[0m")except subprocess.CalledProcessError as e:return Nonedef check_php_extension(extension_name, expected_version=None):try:output = subprocess.check_output(['php', '-m'], stderr=subprocess.STDOUT)result = output.decode('utf-8')installed_extensions = result.split()if extension_name in installed_extensions:print(f"\033[32m{extension_name} 已安装\033[0m")if expected_version is not None:output = subprocess.check_output(['php', '--ri', extension_name], stderr=subprocess.STDOUT)result = output.decode('utf-8')match = re.search(r"Version => (.+)", result)if match:version = match.group(1).strip()print(f"\033[32m{extension_name} 版本号为 {version}\033[0m")if not re.match(expected_version.replace("*", r"\d+"), version):return None# print(f"报错:{extension_name} 扩展的版本号不满足要求")else:return None#print(f"无法获取 {extension_name} 扩展的版本信息")else:print(f"\033[31m{extension_name} 扩展未安装\033[0m")except subprocess.CalledProcessError as e:print(f"无法执行命令: {e.output}")def check_proc_open():try:output = subprocess.check_output(['php', '-i'], stderr=subprocess.STDOUT)result = output.decode('utf-8')if 'disable_functions' in result:disable_functions = result.split('disable_functions => ')[1].split(' =>')[0]if 'proc_open' in disable_functions:print("\033[31mproc_open 函数已被禁用\033[0m")else:print("\033[32mproc_open 函数未被禁用\033[0m")else:print("无法获取禁用函数列表")except subprocess.CalledProcessError as e:print(f"无法执行命令: {e.output}")def check_mysql_version():try:output = subprocess.check_output(['mysql', '-V'], stderr=subprocess.STDOUT)result = output.decode('utf-8')version_match = re.search(r"\d+\.\d+\.\d+", result)if version_match:mysql_version = version_match.group(0)if mysql_version.startswith('5.6.') or mysql_version.startswith('5.7.'):print(f"\033[32mMySQL 版本通过 (当前版本:{mysql_version})\033[0m")else:print(f"\033[31mMySQL 版本不通过 (当前版本:{mysql_version})\033[0m")else:print("\033[31m无法获取MySQL 版本号\033[0m")except subprocess.CalledProcessError as e:print(f"无法执行命令: {e.output}")def check_web_server():try:apache_process = subprocess.check_output(['ps', '-ef']).decode('utf-8')if 'apache2' in apache_process or 'httpd' in apache_process:print("\033[32m当前环境为 Apache  (建议使用Nginx)\033[0m")returnnginx_process = subprocess.check_output(['ps', '-ef']).decode('utf-8')if 'nginx' in nginx_process:print("\033[32m当前环境为 Nginx\033[0m")returnprint("\033[31m未检测到 Apache 或 Nginx 进程\033[0m")except subprocess.CalledProcessError as e:print(f"无法执行命令: {e.output}")print('')check_php_version()print('')check_proc_open()print('')check_php_extension('redis')print('')check_php_extension('fileinfo')print('')check_php_extension('swoole')print('')check_php_extension('swoole_loader', '3.0.\d+')print('')check_mysql_version()print('')check_web_server()print('')print('---------------------------------------------------------------------------------')print('')print("\033[33m注:请确定当前PHP命令行版本与你安装的PHP版本一致\033[0m")print("\033[33m注:如果你确定以上扩展已经安装并配置,请重启php、必要时重启服务器\033[0m")print("\033[33m本脚本为爱发电\033[0m")print("\033[33mby:网前雨刮器\033[0m")check_php_environment()

如果您不会使用python 不会配置python环境,可以使用我已经打包好的程序

使用方法如下:

将程序放在服务器下,直接“./文件名” 运行即可。

982b9202311271116187887.png

​​​​​​​ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/671951.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FreeBSD RISCV 在QEME中实践-网络配置

在前一篇文章中&#xff0c;我们一起进行了FreeBSD RISCV 在QEME中实践 现在&#xff0c;让我们配置好网络吧&#xff01; 先上结论&#xff1a;用默认配置启动即可&#xff0c;网络就加载好了&#xff0c;只是不能ping罢了。因为不能ping&#xff0c;以为网络没通&#xff0…

印度人Torque Minimum 方式的改进

1 局限性分析 印度人Torque Minimum 复现 上一篇文章分析了印度人那篇Torque Minimum文章的方法&#xff0c;他的方法存在一些局限性&#xff1b; 1&#xff1a;第一个就是6次转矩脉动的抑制&#xff0c;导致了较大的电流谐波畸变率&#xff1b; 2&#xff1a;第二个就是6次…

【C语言】整数,浮点数数据在内存中的存储

Tiny Spark get dazzling some day. 目录 1. 整数在内存中的存储1.1 原码、反码、补码1.1 大小端存储1.2.1 字节序分类1.2.2 判断字节序 2. 浮点数在内存中的存储2.1 浮点数的存储形式2.2 浮点数的 “ 存 ”2.2.1 S2.2.2 E2.2.3 F 2.3 浮点数的 “ 取 ”2.3.1 S2.3.2 E、F 3. 浮…

爱普生S2D13V52快速实现车载显示屏高分辨率显示系统

随着时代的发展&#xff0c;汽车驾驶位前中央的显示屏承担的功能也越来越多&#xff0c;从一开始仅仅是显示仪表盘的信息&#xff0c;再到作为显示屏辅助倒车&#xff0c;再到如今和一块平板一样可公认娱乐&#xff0c;显示屏的大小有些时候成为了一辆车够不够好的体现。随着汽…

【前端】HTML基础(3)

文章目录 前言一、HTML基础1、表格标签1.1 基本使用1.2 合并单元格 2、列表标签2.1 无序列表2.2 有序列表2.3 自定义列表 3、 表单标签2.1 form标签2.2 input标签2.3 label标签2.4 select标签2.5 textarea标签 4、无语义标签5、HTML特殊字符 前言 这篇博客仅仅是对HTML的基本结…

Apache POI入门学习

Apache POI入门学习 官网地址 excel中使用到的类读取excel表格内容表格内容maven依赖方式一测试结果 方式二测试结果 向excel中写入数据方式一方式二方式三测试结果 从 Excel 工作表中的公式单元格读取数据测试结果 Excel 工作表中写入公式单元格从受密码保护的Excel中读取数据…

2024年03月 Scratch 图形化(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch图形化等级考试(1~4级)全部真题・点这里 一、单选题(共18题,共50分) 第1题 运行程序后,角色一定不会说出的数字是?( ) A:2 B:4 C:6 D:8 答案:A 程序中随机数的取值最小为 2,最大为 20 ,那么随机数加上 2 之后的结果的最小值为 4 ,最大值为 22 。所…

查看微信小程序主包大小

前言 略 查看微信小程序主包大小 在微信开发者工具右上角找到“详情->基本信息” 查看微信小程序主包构成 通过微信开发者工具中的“代码依赖分析”工具查看

第十三章 计算机网络

这里写目录标题 1.网络设备2.协议簇2.1电子邮件(传输层)2.2地址解析(网际层)2.3DHCP(动态主动配置协议)2.4URL(统一资源定位器)2.5IP地址和子网掩码 1.网络设备 物理层&#xff1a;中继器&#xff0c;集线器(多路中继器) 数据链路层&#xff1a;网桥&#xff0c;交换机(多端口…

Java常用5大集合类详解(实战)

文章目录 1、Collection1.1 iterator 迭代器 2、List 有序集合2.1 ArrayList ⭐2.2 LinkedList2.3 Queue 3、Set 无序集合3.1 HashSet ⭐3.2 TreeSet3.3 LinkedHashSet 4、Map 键值集合4.1 HashMap ⭐4.2 TreeMap / LinkedHashMap 5、工具类5.1 Collections5.2 Arrays 【拓展】…

多组间比较散点图+误差棒(自备)

目录 数据 计算四分位值 作图 数据 rm(list ls()) library(ggplot2) library(dplyr) library(ggpubr) library(reshape2) library(tidyverse)data <- iris##鸢尾花数据集 dat <- data[,c(5,1)]#单个数据进行分析 计算四分位值 #根据分组计算四分位及中位数 dat1 …

SegFix:预测边界和预测方向来修正边界

论文标题&#xff1a;SegFix: Model-Agnostic Boundary Refinement for Segmentation 论文地址&#xff1a;https://arxiv.org/pdf/2007.04269.pdf 代码地址&#xff1a;https://github.com/openseg-group/openseg.pytorch 两种loss监督 八种方向变回归问题为分类问题 代码地…