PhantomJS不能通过浏览器在PHP中工作(但是通过命令行,甚至通过命令行运行PHP)

时间:2012-06-26 22:29:35

标签: php linux phantomjs

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

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

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

(代表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用户可以通过提供sudo访问权限显式访问PhantomJS应用程序,仅限于PhantomJS应用程序。

答案 2 :(得分:-1)

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

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