javascript - 在 Web 服务器上安装 CasperJS 和 PhantomJS

标签 javascript php phantomjs casperjs

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

Uncaught ReferenceError: require is not defined

因为浏览器/客户端中不存在 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 Web 服务器上运行它。我关注了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 脚本无法在客户端浏览器中执行。它需要在服务器上调用,在 CasperJS/PhantomJS 和 内部运行结果可以传递给客户端。

您要么需要

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

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

关于javascript - 在 Web 服务器上安装 CasperJS 和 PhantomJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33699055/

相关文章:

javascript - 如何生成在服务器上运行的 PDF 页面

javascript - 幻影;单击一个元素

javascript - 如何立即保存在 Sequelize beforeCreate Hook 中?

将文本输入大写的 JavaScript 代码

javascript - DevExtreme 使用 knockout 加载 JSON 作为数据源

php - 如何在 PHP 中使用@media 查询?

php - 无法通过传递的输入深入扩展 Laravel Artisan Command

javascript - 使用 Rangy,即使我通过 setStartBefore 方法扩展范围,range.canSurroundContents 方法仍然返回 false

php - 使用 PHP 身份验证进行 HTTP 身份验证

ruby-on-rails - Capybara、Poltergeist 和 Reactjs - 'undefined' 不是函数