我正在使用phantomJS以编程方式截取网页的屏幕截图。我的网络服务器在 64 位 Linux 上运行。
情景
我的test.php
档案
exec('./phantomjs --version', $o, $e);
print_r($o);
echo $e;
我test.php
在浏览器中打开。我得到的输出是:
1.9.1 // version number
0 // exit code
这证明我可以运行命令exec()
并且运行phantomJS
良好。
问题
现在,当我将上面的代码替换为:
exec('./phantomjs http://mywebsite.com/test.js', $o, $e);
print_r($o);
echo $e;
输出是:
Array ( ) // empty output
139 // exit code which on investigating turned out to be segmentation fault
我也试过:
exec('./phantomjs ./test.js', $o, $e); // since phantomjs and test.js are in same folder
但结果是一样的(段错误)
test.js代码:
var page = require('webpage').create();
var url = 'http://www.rediff.com/';
page.open(url, function (status) {
phantom.exit();
});
这让我相信使用完整路径作为第二个参数phantomJS
会导致它崩溃。因此,我想知道的是:
- 我的假设是对的吗?
- 还是因为对我的网络服务器的某些限制阻止了通过绝对 URL
exec()
访问文件?.js