我是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
提前谢谢。
答案 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变量(或者在用户范围设置它们。