我试图让 PhantomJS 通过 PHP 运行。
当我直接通过命令行运行 JavaScript 文件时,它工作正常。当我php render_html.php
在命令行中运行时,它只运行一个 exec(),它工作正常。但是,当我尝试在浏览器中打开这个 php 文件时,它什么也没做。我什至没有得到任何回声。
我已经在 OS X 和我的 EC2 服务器上本地完成了所有这些测试,并且得到了相同的结果。
这可能是权限问题,请检查运行 Web 服务器的用户是否有权运行 phantomjs 可执行文件。
(代表 OP 发布)。
这似乎确实是一个权限问题。似乎 Apache 的处理方式可能与其他用户有所不同?即使标准权限允许任何用户访问 PhantomJS 应用程序,apache 仍然无法访问。
任何有类似问题的人都应该通读这个问题和答案。
这是针对我的特定情况(在 Linux 服务器上)的稍微调整的解决方案。编辑您的 sudoers 文件 (/etc/sudoers) 以包含以下行:
apache ALL=NOPASSWD: /usr/bin/phantomjs
我用 emacs 做到了这一点,(Cx Cq 启用只读文件的编辑)。我似乎对此没有任何问题,但我想建议使用名为 visudo 的东西来编辑 sudoers。Emacs 为我工作,但你应该查一下。
这给了 apache 用户对 PhantomJS 应用程序的显式访问权限,方法是给它 sudo 访问权限,仅限于 PhantomJS 应用程序。
我最近在 centos 7 环境中使用 phantomjs 并面临与 op 相同的问题。我尝试了在stackoverflow中找到的解决方案和方法,所以我不太确定哪种方法有效或哪些方法可以共同解决问题。我试过