Casperjs脚本在php中返回null

时间:2017-12-09 16:28:53

标签: javascript php jquery phantomjs casperjs

我是casperjs和phantomjs世界的新蜜蜂。 每当我从PHP脚本运行时,我都会从脚本中获取null,而我在cmd中得到响应。

  

这是php脚本,我在其中调用了名为Test.js的casperjs脚本

<?php

    putenv("PHANTOMJS_EXECUTABLE=C:/phantomjs/bin");
    putenv("DYLD_LIBRARY_PATH");

    $response=null;
    $response=exec('C:/casperjs/bin C:/Test.js');
    if ($response != null) {
        echo("Null Response");
    }
    else{
        echo("Response : " . $response );
    } ?>
  

这是Test.js.一个casperjs脚本

var casper = require('casper').create({
verbose: false,
logLevel: "debug",
pageSettings: {
    loadImages: false,
    loadPlugins: false,
    userAgent: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0'
} });
casper.start('https://www.google.co.in/', function(){
    this.echo("From Script",'INFO')
});
casper.run();
  

正如您所看到的,我在c中安装了幻像和casperjs,并且我已经为两者设置了环境变量   对于幽灵环境。变量 - C:\ phantomjs \ bin \   对于Casper Env。变量 - C:\ casperjs \ bin

提前谢谢。

1 个答案:

答案 0 :(得分:0)

您的PHP应如下所示:

$response=null;
exec('C:/casperjs/bin C:/Test.js',$response);

@Vaviloff发布了指向文档页面的链接。我经常发现PHP的文档缺乏清晰度,恕我直言,exec()就是一个很好的例子。以下是它的内容:

string exec ( string $command [, array &$output [, int &$return_var ]] )

如果你进一步阅读,你会发现它返回的字符串充其量只是最后一行。如果要测试响应,则需要初始化一个var,然后引用作为'callback'var(可以这么说),以便exec命令写回。

你也可以尝试用反引号作弊并在那里设置我们的ENV变量(或者在用户范围设置它们。