需要在 windows 上运行一个小程序,用来检查是否已经配置 PHP 的运行环境,请问用哪个语言开发简单些呢? c++, Python 或其它? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MrMike
V2EX    C

需要在 windows 上运行一个小程序,用来检查是否已经配置 PHP 的运行环境,请问用哪个语言开发简单些呢? c++, Python 或其它?

  •  
  •   MrMike 2017-12-20 16:00:20 +08:00 4101 次点击
    这是一个创建于 2884 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,如果本地电脑已经配置了 php 的运行环境,就直接运行 php 程序,否则就自动下载相关的程序进行安装配置,请问用哪个语言要简单些呢?

    第 1 条附言    2017-12-20 16:35:43 +08:00
    需要有一个界面来引导终端客户一直 NEXT 进行操作的,不能让用户自己输入命令去查询。
    54 条回复    2017-12-22 09:55:40 +08:00
    ljsh0102
        1
    ljsh0102  
       2017-12-20 16:01:34 +08:00
    F#
    wkan
        2
    wkan  
       2017-12-20 16:05:20 +08:00 via iPhone
    建议直接打包和程序一起打包 php 运行环境
    wkan
        3
    wkan  
       2017-12-20 16:05:47 +08:00 via iPhone
    修正:建议直接和程序一起打包 php 运行环境
    MrMike
        4
    MrMike  
    OP
       2017-12-20 16:09:03 +08:00
    @wkan 不想跟程序一起打包,程序在配置好本地运行环境后,自动下载到本地电脑上。所以需要在下载程序之前就要检查下运行环境。
    MrMike
        5
    MrMike  
    OP
       2017-12-20 16:09:55 +08:00
    @ljsh0102 谢谢
    clino
        6
    clino  
       2017-12-20 16:12:27 +08:00
    建议用 go 试试,虽然我不会 go,但是编译出的工具没依赖,比 python 部署方便,开发效率又比 c++之类的高
    mt7620
        7
    mt7620  
       2017-12-20 16:20:43 +08:00
    C#之类的应该在合适不过了
    ysc3839
        8
    ysc3839  
       2017-12-20 16:22:36 +08:00
    Windows 的话,我觉得 Powershell 会比较方便。Python 也可以的,用 PyInstaller 打包成 exe 也可以直接运行。
    Ellison
        9
    Ellison  
       2017-12-20 16:23:43 +08:00   1
    批处理就行吧,一般 Windows 下配 PHP 环境,都会加上环境变量吧,直接批处理跑下 php -v,如果命令不存在 errorlevel 就是 9009
    Arnie97
        10
    Arnie97  
       2017-12-20 16:23:48 +08:00 via Android
    @mt7620 然后配置 PHP 的运行环境前,先要配置 C#的运行环境(逃
    MrMike
        11
    MrMike  
    OP
       2017-12-20 16:28:02 +08:00
    @ysc3839 @mt7620 如何检查是否安装了指定的软件呢?检查注册表还是有其他方法呢?
    anyx
        12
    anyx  
       2017-12-20 16:30:03 +08:00
    这么简单的需求,还是 windows,必然是批处理或 powershell 或 vbs 或 js
    neoblackcap
        13
    neoblackcap  
       2017-12-20 16:30:30 +08:00
    windows 小程序请使用 C#
    Hellert
        14
    Hellert  
       2017-12-20 16:30:43 +08:00
    使用直接编译成本地代码的,Go, Delphi, VC++都可以。
    omph
        15
    omph  
       2017-12-20 16:33:54 +08:00
    powershell
    MrMike
        16
    MrMike  
    OP
       2017-12-20 16:37:53 +08:00
    @omph
    @anyx 不能让用户自己去输入命令查询,需要有一个界面来展示给用户,用户只需要选择下一步就可以了,所有的检查工作,在程序内部处理。
    araraloren
        17
    araraloren  
       2017-12-20 16:42:57 +08:00
    @MrMike
    Use PowerShell or bat or other script check PHP environment.
    Use C# make a GUI wrapper of that script.
    MrMike
        18
    MrMike  
    OP
       2017-12-20 16:45:24 +08:00
    @araraloren thanks for your reply.
    acros
        19
    acros  
       2017-12-20 16:45:47 +08:00
    批处理脚本 UI 和下载检测不好办。
    还是选.net 派系,要我就直接开 C#了,反正.net framework 版本选的低一点也没关系,这会 php 开发机也不会是 xp 系统的说。
    MrMike
        20
    MrMike  
    OP
       2017-12-20 16:48:53 +08:00
    @acros 很有可能还是 xp 系统。
    BBrother
        21
    BBrother  
       2017-12-20 16:52:19 +08:00
    只有我是装一个文件夹的 exe 然后顺着点吗?
    ysc3839
        22
    ysc3839  
       2017-12-20 16:52:45 +08:00
    @MrMike 环境变量?注册表应该检测不到的,PHP 属于绿色软件,随便扔哪都能用的。
    acros
        23
    acros  
       2017-12-20 16:53:26 +08:00 via iPhone
    @MrMike 这下还不得不用批处理脚本先查环境,然后自带个.net framework 安装包备用。

    以前盗版游戏光盘就是这么弄的....
    MrMike
        24
    MrMike  
    OP
       2017-12-20 16:57:21 +08:00
    @acros 哈哈,是这样的哦。
    MrMike
        25
    MrMike  
    OP
       2017-12-20 16:59:38 +08:00
    @ysc3839 所以,如何检查是否配置了 apache 这样的软件呢。用 linux find 这样的命令全盘搜索,可能消耗太大了,或者 ping 本地 localhost 然后再根据返回的数据进行是否支持 php,不晓得这样是否可行,效率如何了。
    ysc3839
        26
    ysc3839  
       2017-12-20 17:01:50 +08:00
    @MrMike 这种情况就不要搜索了,检查一下环境变量,没有的话让用户选择位置。
    MrMike
        27
    MrMike  
    OP
       2017-12-20 17:07:25 +08:00
    @ysc3839 我试试。
    acgnsstech
        28
    acgnsstech  
       2017-12-20 17:10:07 +08:00
    我觉得楼主可以看看 http://mdoc.vip 思路有点像 也是需要安装个 php 环境 XAMPP
    jason19659
        29
    jason19659  
       2017-12-20 17:11:02 +08:00
    批处理
    Hellert
        30
    Hellert  
       2017-12-20 17:11:27 +08:00
    也可以考虑 InnoSetup 或 NSIS 这类安装程序制作工具,环境检查网络下载都可以做,上手比较快。
    MrMike
        31
    MrMike  
    OP
       2017-12-20 17:13:30 +08:00
    @acgnsstech 最终的程序是 php 的,但是跟 mdoc 不一样,就是不想让终端用户去配置环境,也不需要用户晓得是 php 需要什么样的运行环境。
    yaowenz
        32
    yaowenz  
       2017-12-20 17:23:20 +08:00
    C#
    MrMike
        33
    MrMike  
    OP
       2017-12-20 17:25:28 +08:00
    @Hellert 看了下介绍,貌似可以满足,晚上试试。之前用 installshield 没搞成。
    acgnsstech
        34
    acgnsstech  
       2017-12-20 17:25:42 +08:00
    @MrMike

    http://gtk.php.net/ 直接用 php 开发桌面软件~~
    hiboshi
        35
    hiboshi  
       2017-12-20 17:28:52 +08:00
    有想过怎么检查 是否安装 php?
    环境变量,如果没在环境变量中注册,但是 有 php 源码,是否算有 php ?
    ioven
        36
    ioven  
       2017-12-20 20:38:00 +08:00
    autoit,以前很多安装程序使用
    wwwwzf
        37
    wwwwzf  
       2017-12-21 00:23:07 +08:00
    C#
    msg7086
        38
    msg7086  
       2017-12-21 01:44:56 +08:00   1
    但是 PHP 环境你是绕不过的。而且一不小心就会搞出事情来。

    以前见到过个傻逼桌面安卓模拟器,用的 VirtualBox,然后我装上了它,它把我 VirtualBox 里的虚拟机清空了,塞上了自家的虚拟机镜像。
    看着我就不高兴了,就把它卸载了。然后它很自觉地帮我把 VirtualBox 整个卸载了。

    回到主题,如果用户已经安装并定制了一份 PHP,你是打算复制一份出来吗?还是直接原样跑用户的环境呢?
    如果用户装的 PHP 版本和你想要的不一样怎么办呢?
    如果用户不用 Apache 而用 IIS 你怎么办呢?
    如果你自己要用到的扩展和用户自己用的扩展冲突了要怎么办呢?
    loading
        39
    loading  
       2017-12-21 06:40:34 +08:00 via Android
    批处理就能完成
    cchange
        40
    cchange  
       2017-12-21 07:26:31 +08:00 via iPhone
    @msg7086 说道虚拟机 qemu 虚拟机是不是满足需求呢? 但 qemu 是不是得装虚拟网卡?
    ipwx
        41
    ipwx  
       2017-12-21 08:49:11 +08:00
    别用系统的 php,还是都用自己的更好。至少自己的 php 可以自己管理目录,自己管理环境。
    UnknownR
        42
    UnknownR  
       2017-12-21 10:33:23 +08:00
    用 powershell,看看$env 变量里有没有 php,没有就调 http-request 下载,执行外部程序安装,要界面的话就用 c#写
    janxin
        43
    janxin  
       2017-12-21 10:37:06 +08:00
    php 啊...
    oott123
        44
    oott123  
       2017-12-21 10:39:10 +08:00
    我觉得终端用户机器上装了 php 的肯定少,而且又要符合版本,搞不好还要部分扩展什么的,到时候用户不小心改了自己的环境你的软件跑不起来了又很麻烦……这又不是 vcredist 或者 .net fx 有完善的管理机制。

    所以我建议:不如不管用户装没装自己都下一个。

    至于用啥,我觉得 InnoSetup 之类的工具就行啊……
    rMike
        45
    MrMike  
    OP
       2017-12-21 14:01:48 +08:00
    @UnknownR 这个好像不得行,我本地电脑装了 phpStudy ( PHP 环境集成包),在环境变量里面,没有设置 PHP,也是可以运行 PHP 的。
    MrMike
        46
    MrMike  
    OP
       2017-12-21 14:06:43 +08:00
    @oott123 如果都单独装,apache 和 mysql 需要使用端口,如果之前已经配置了,不判断就进行重新安装的话,就运行不了。所以,还是想在安装之前,对本地电脑进行检查下,看是配置了 apache 还是 iis,及其 php,mysql 版本等等,如果已经配置,但是不适合项目运行的话,就提示用户进行处理或者修改端口。
    @msg7086
    MrMike
        47
    MrMike  
    OP
       2017-12-21 14:07:59 +08:00
    @UnknownR 谢谢,需要有界面。刚才看了下 WPF 的使用,还没摸到门路。
    xsliang
        48
    xsliang  
       2017-12-21 14:11:48 +08:00
    照顾老机器又要有界面 选 framework2.0,用 winform 快速完成
    msg7086
        49
    msg7086  
       2017-12-21 17:25:30 +08:00
    #46 @MrMike 你这需求有些不明确啊。

    需求:端口冲突判断
    提问:如何检查 PHP 环境

    ermmm

    @cchange 联网的话要装网卡吧。
    我主要是吐槽这暴力的安装程序……
    hoythan
        50
    hoythan  
       2017-12-21 17:39:21 +08:00   1
    Electron 用 js 写一个程序,支持 win mac linux 等设备
    ZXCDFGTYU
        51
    ZXCDFGTYU  
       2017-12-21 18:38:05 +08:00
    ```bash
    CHECKPHP=$(curl http://127.0.0.1/info.php)

    if($CHECKPHP!=="hello"){
    ./installer.sh
    }
    ```


    ```php
    echo "hello";
    ```
    why1
        52
    why1  
       2017-12-21 19:00:36 +08:00 via Android
    那么懒,没客服吗
    txlty
        53
    txlty  
       2017-12-21 19:15:22 +08:00
    php 本身就可以写,找个可用的 php to exe,打包封装一下。t/187672 官网没了找其他地方下
    如果你会用 VS 编译 php 源码的话,也可以自己编译封装一个单文件 exe,包含了 php 解释引擎和需要运行的代码。C 语言方面,只要理解 zend_eval_string()这一个函数的作用就够了。
    flyico
        54
    flyico  
       2017-12-22 09:55:40 +08:00
    Windows 下 还要 GUI 除了 C#没有更好的了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1021 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 37ms UTC 22:51 PVG 06:51 LAX 14:51 JFK 17:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86