示例CasperJs测试:
casper.test.begin('Hello, Test!', 1, function(test) {
test.assert(true);
test.done();
});
Linux命令执行结果:
# casperjs test /bin/casper-test.js
Test file: /bin/casper-test.js
# Hello, Test!
PASS Subject is strictly true
PASS Hello, Test! (1 test)
PASS 1 test executed in 0.026s, 1 passed, 0 failed, 0 dubious, 0 skipped.
PHP的结果:
<?php
echo exec('casperjs test /path/to/casper-test.js');
?>
[37;42;1mPASS 1 test executed in 0.024s, 1 passed, 0 failed, 0 dubious, 0 skipped. [0m
如您所见,它仅显示Linux命令的最后一行(正确)结果 有什么想法吗?
答案 0 :(得分:2)
查看exec
的文档:
http://php.net/manual/en/function.exec.php
string exec(string $ command [,array&amp; $ output [,int&amp; $ return_var]])
要捕获所有输出,您应该可以执行以下操作:
exec('casperjs test /path/to/casper-test.js 2>&1', $output, $return_var);
var_dump($output);
var_dump($return_var);
将2>&1
附加到您的命令会重定向STDERR
和STDOUT
并将其捕获到$output
变量中。
另外,我注意到输出似乎是试图将它着色为shell上的输出,这是[37;42;
字符串是什么。根据文档,看起来您可以在命令中添加--no-colors
来禁用彩色输出:
casperjs test --no-colors /path/to/casper-test.js 2>&1