需求:通过接口或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文件编写如下

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

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