在Web服务器上安装CasperJS和PhantomJS

时间:2015-11-13 18:01:03

标签: javascript php phantomjs casperjs

我将 phantomjs-1.9.7-macosx casperjs 1.1-beta 放入两个单独的文件夹中。在根目录中,我有 index.html ,我在其中调用 hello.js ,这是来自casparjs入门示例的minimal scraping script。显然,我得到了:

  

未捕获的ReferenceError:未定义require

因为浏览器/客户端中不存在require()。

然后我尝试用PHP设置环境并执行它

putenv("PHANTOMJS_EXECUTABLE=/phantomjs/bin/phantomjs");
echo "Running PhantomJS version: ";
echo exec('/phantomjs/bin/phantomjs --version 2>&1');
echo "Running CasperJS version: ";
echo exec('/casperjs/bin/casperjs --version 2>&1');

但是服务器响应了一个新错误:

  

警告:出于安全原因,已在

中禁用了exec()

我找不到任何解决方法,所以我决定退一步并在本地XAMPP Web服务器上运行它。我跟着answer from a similar problem,但CasperJS再次回复错误:

  

[Errno 13]许可被拒绝;你安装了phantomjs吗?

我试过" sudo chmod a + rx"对于目录,但没有成功。

我找不到任何问题的解决方案。我用这些简单的例子来测试。所有这些都可以从终端运行(以及本地Web服务器上的PHP文件)。我认为,问题在于服务器上的集成,无论是本地还是Web。

1 个答案:

答案 0 :(得分:1)

PhantomJS是一个浏览器,您需要调用它来执行某些导航脚本。此脚本可能会打开页面并对结果执行某些操作。 CasperJS构建于PhantomJS之上,简化了编写PhantomJS脚本所需的大量工作。

PhantomJS / CasperJS脚本无法在客户端浏览器中执行。需要在服务器上调用,在CasperJS / PhantomJS内部运行结果可以传递给客户。

您需要

  • 启用exec / shell_exec
  • 使用将您的CasperJS脚本编写为Web服务器。

PhantomJS提供web server module,您可以使用它来让PhantomJS接受HTTP请求,打开包含一些CasperJS代码的页面,执行某些操作并将结果写入响应。您可以通过这种方式启动单个CasperJS实例,并让PHP将请求转发给CasperJS。

相关问题