我将 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。
答案 0 :(得分:1)
PhantomJS是一个浏览器,您需要调用它来执行某些导航脚本。此脚本可能会打开页面并对结果执行某些操作。 CasperJS构建于PhantomJS之上,简化了编写PhantomJS脚本所需的大量工作。
PhantomJS / CasperJS脚本无法在客户端浏览器中执行。需要在服务器上调用,在CasperJS / PhantomJS内部运行结果可以传递给客户。
您需要
exec
/ shell_exec
或PhantomJS提供web server module,您可以使用它来让PhantomJS接受HTTP请求,打开包含一些CasperJS代码的页面,执行某些操作并将结果写入响应。您可以通过这种方式启动单个CasperJS实例,并让PHP将请求转发给CasperJS。