【问题标题】:PhantomJS doesn't work in PHP through browser (but does via command line, and even by running PHP through command line)PhantomJS 不能通过浏览器在 PHP 中工作(但可以通过命令行,甚至通过命令行运行 PHP)
【发布时间】:2012-06-26 22:29:35
【问题描述】:

我正在尝试让 PhantomJS 通过 PHP 运行。

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

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

【问题讨论】:

  • 我知道这是一种回归,但我遇到了完全相同的问题,但在 CentOS 中。我假设 CentOS 中 sudoers 文件的语法会有所不同?
  • 您好。我已将您的答案附录移动到正确的答案中,因此通过 API 访问 Stack Exchange 的人可以获得正确的 Q/A 分离。如果您想自己回答,请这样做,我将删除我自己的 CW 版本。

标签: php linux phantomjs


【解决方案1】:

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

【讨论】:

  • 我确实检查了可执行文件本身的权限。他们是755,应该足够了。换了777,还是没有。不过,谢谢。
【解决方案2】:

(代表 OP 发布)。

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

任何有类似问题的人都应该阅读this question and the answers

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

apache ALL=NOPASSWD: /usr/bin/phantomjs

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

这通过授予 Apache 用户对 PhantomJS 应用程序的显式访问权限,授予它 sudo 访问权限,仅限于 PhantomJS 应用程序。

【讨论】:

    【解决方案3】:

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

    1. 授予 phantomjs 二进制和目标 js 和包含目录的 777 权限(无效)
    2. visudo 并允许 apache 使用无密码的 phantomjs(无效)
    3. 将 apache 添加到 sys 组(无效)
    4. 禁用selinux 禁用 selinux 并重新启动 cent os 后,phantomjs 开始在浏览器中工作。 :D :D

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-07
      • 1970-01-01
      • 2013-03-06
      • 2011-11-10
      • 1970-01-01
      • 2012-09-05
      • 2023-03-28
      相关资源
      最近更新 更多