在 Web 服务器上安装 CasperJS 和 PhantomJS

Installing CasperJS and PhantomJS on a web server

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

Uncaught ReferenceError: require is not defined

因为 browser/client-side 中不存在 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');

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

Warning: exec() has been disabled for security reasons in

我找不到任何解决方法,所以我决定退后一步,运行 在本地 XAMPP 网络服务器上进行此操作。我按照 answer from a similar problem,但 CasperJS 再次响应错误:

[Errno 13] Permission denied; did you install phantomjs?

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

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

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

一个PhantomJS/CasperJS脚本不能在客户端浏览器中执行。它需要在服务器上调用,运行 inside CasperJS/PhantomJS and the results can be passed to the client.

您要么需要

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

PhantomJS 提供了 web server module ,您可以使用它让 PhantomJS 接受 HTTP 请求,用一些 CasperJS 代码打开一个页面,做一些事情并将结果写入响应。您可以通过这种方式启动单个 CasperJS 实例,然后让 PHP 将请求转发给 CasperJS。