6

我试图让 PhantomJS 通过 PHP 运行。

当我直接通过命令行运行 JavaScript 文件时,它工作正常。当我php render_html.php在命令行中运行时,它只运行一个 exec(),它工作正常。但是,当我尝试在浏览器中打开这个 php 文件时,它什么也没做。我什至没有得到任何回声。

我已经在 OS X 和我的 EC2 服务器上本地完成了所有这些测试,并且得到了相同的结果。

4

3 回答 3

0

这可能是权限问题,请检查运行 Web 服务器的用户是否有权运行 phantomjs 可执行文件。

于 2012-06-26T22:37:06.517 回答
0

(代表 OP 发布)。

这似乎确实是一个权限问题。似乎 Apache 的处理方式可能与其他用户有所不同?即使标准权限允许任何用户访问 PhantomJS 应用程序,apache 仍然无法访问。

任何有类似问题的人都应该通读这个问题和答案

这是针对我的特定情况(在 Linux 服务器上)的稍微调整的解决方案。编辑您的 sudoers 文件 (/etc/sudoers) 以包含以下行:

apache ALL=NOPASSWD: /usr/bin/phantomjs

我用 emacs 做到了这一点,(Cx Cq 启用只读文件的编辑)。我似乎对此没有任何问题,但我想建议使用名为 visudo 的东西来编辑 sudoers。Emacs 为我工作,但你应该查一下。

这给了 apache 用户对 PhantomJS 应用程序的显式访问权限,方法是给它 sudo 访问权限,仅限于 PhantomJS 应用程序。

于 2014-12-12T21:46:33.757 回答
-1

我最近在 centos 7 环境中使用 phantomjs 并面临与 op 相同的问题。我尝试了在stackoverflow中找到的解决方案和方法,所以我不太确定哪种方法有效或哪些方法可以共同解决问题。我试过

  1. 授予 phantomjs 二进制和目标 js 和包含目录的 777 权限(不起作用)
  2. visudo 并允许 apache 在没有密码的情况下使用 phantomjs(不起作用)
  3. 将 apache 添加到 sys 组(不起作用)
  4. 禁用 selinux 并重新启动 cent os 后禁用 selinux,phantomjs 开始在浏览器中工作。:D :D
于 2016-09-30T15:18:45.757 回答