CasperJs 没有完全从 PHP 开始执行
CasperJs doesn't execute completely from PHP
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 命令(正确)结果的最后一行。
有什么想法吗?
查看 exec
的文档:
http://php.net/manual/en/function.exec.php
string exec ( string $command [, array &$output [, int &$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
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 命令(正确)结果的最后一行。
有什么想法吗?
查看 exec
的文档:
http://php.net/manual/en/function.exec.php
string exec ( string $command [, array &$output [, int &$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