我将phantomjs-1.9.7-macosx和casperjs 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/