本文介绍一下在 PHP 语言下面如何调用系统命令执行 phantomjs 实现功能。
下面直接给出执行代码:echo '';
exec('H:\wamp\www\phantomjs\bin\phantomjs --output-encoding=utf8 H:\wamp\www\Xss_Scanner\test.js ',$output_main);
var_dump($output_main);
//$str = implode('',$output_main);
//var_dump($str);
test.js文件里面的内容如下:console.log('Loading a web page');
var page = require('webpage').create();
var url = 'http://www.mafutian.net/';
page.open(url, function (status) {
//Page is loaded!
if (status !== 'success') {
console.log('Unable to post!');
} else {
console.log(page.content);
}
phantom.exit();
});
执行结果如下图所示:
注意,能够实现上面执行结果需要主要下面几点:
(1)不能开启 PHP 的安全模式,即在 php.ini 中需要将 sql.safe_mode 设置为 Off。(并重启服务器,当然, php 本身默认就是不开启安全模式的)
(2)无论 phantomjs 是否加入到系统环境变量中,在 exec() 中都应该是绝对路径的,以下执行是无效的:exec('phantomjs --output-encoding=utf8 H:\wamp\www\Xss_Scanner\test.js ',$output_main);
需要将 phantomjs 取绝对路径。
(3)就是 js 文件可以不取绝对路径。可以是相对于网站根目录的,下面执行是成功的:exec('H:\wamp\www\phantomjs\bin\phantomjs --output-encoding=utf8 test.js ',$output_main);
注:test.js 放置于网站的根目录下。
另外:在 PHP 下执行 phantomjs 也可以使用另外一个函数 systom() 来执行,这里就不给出简介了。