PHP调用.bat文件执行codeception测试命令

需求:通过接口或url地址请求,使php代码调用且执行一个编写得有调用codeception测试命令的.bat脚本。

代码环境:phpStudy集成环境(php-7.0.12-nts+Apache);YII2(basic版)框架;服务器及本机操作系统:widows

遇到的问题:exec()函数执行编写调用codeception测试命令的文件时无任何返回值。具体情况为,exec()函数能够正常执行cmd命令,如“exec('mkdir test1')”、"exec('dir', $out)",也能够调用绝对路径下的bat文件创建文件夹,打印目录,但调用编写调用codeception测试命令的文件无任何响应。

问题原因:通过url地址(如:local.basic.com/index.php/codeception)请求时,excu()函数执行的目录时在web目录下,而在bat文件中的编写的调用codeception的路径是一个绝的路径,到之后命令运行不成功,错误的.bat文件编写如下

PHP调用.bat文件执行codeception测试命令_第1张图片 错误的bat文件编写内容

上图编写的内容导致函数在执行cmd命令时, 实际上cmd的执行情况是

cmd执行错误文件的结果

因为通过url地址请求时,cmd窗口实际上是在web文件夹中打开的,所以会报如上错误,而正确的bat文件应该像下图那样编写:

PHP调用.bat文件执行codeception测试命令_第2张图片 正确的bat文件编写内容

代码:

@echo off
cd ..\vendor\bin
codecept run api RecommendCest.php --html
cd/

PS:我的codeception名可能因为安装不正确的原因,只能在bin目录下运行相关命令,而官方文档显示是可以在项目根目录运行codeception相关命令的。后期有时间(主要看心情^_^),会更新一些codeception安装、运用的相关博客,欢迎小伙伴留言探讨。另外,如果有大牛知道更简便的方法去调用服务器上的codeception命令(不是直接去服务上执行cmd命令哈),跪求留下执行方法……

 

你可能感兴趣的:(PHP,YII2)