【问题标题】:CasperJs doesn't execute completely from PHPCasperJs 不能完全从 PHP 执行
【发布时间】:2017-02-09 17:47:21
【问题描述】:

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 命令的最后一行(正确)结果。
有什么想法吗?

【问题讨论】:

  • 如果答案是正确的,请务必点击小复选框接受答案,并可选择投赞成票,谢谢!
  • @Clayton Smith 当然!感谢您的完整回答。

标签: javascript php linux stdout casperjs


【解决方案1】:

查看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&gt;&amp;1 附加到您的命令将重定向STDERRSTDOUT 并将其捕获到$output 变量中。

另外,我注意到输出似乎试图将其着色以在 shell 上输出,这就是 [37;42; 字符串。根据文档,您似乎可以在命令中添加 --no-colors 以禁用彩色输出:

casperjs test --no-colors  /path/to/casper-test.js 2>&1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2023-01-20
    • 2021-04-23
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多