PhantomJS不能通过浏览器在PHP中工作(但可以通过命令行,并且甚至可以通过在命令行中运行PHP来工作)。

6
我正在尝试通过PHP运行PhantomJS。
当我直接通过命令行运行JavaScript文件时,它可以正常工作。当我在命令行中运行php render_html.php,它也可以正常工作。但是,当我尝试在浏览器中打开这个php文件时,它什么也不做。我甚至没有得到任何返回值来echo。
我已经在我的本地OS X和EC2服务器上进行了所有这些测试,并且得到了相同的结果。

我知道这是很久以前的事情了,但我在CentOS中遇到了完全相同的问题。我猜想在CentOS中sudoers文件的语法可能会有所不同? - TomCDona
嗨,我把您的答案附录移到了正确的答案中,这样通过API访问Stack Exchange的用户就可以得到正确的问题/回答分离。如果您想自己写一个答案,请随意,我会删除我自己的CW版本。 - halfer
3个回答

0

(代表原帖发布)。

看起来似乎是权限问题。似乎Apache与其他用户有些不同?即使标准权限允许任何用户访问PhantomJS应用程序,但Apache仍无法访问。

有类似问题的人应该阅读这个问题和答案

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

apache ALL=NOPASSWD: /usr/bin/phantomjs

我用emacs完成了这个操作,(使用C-x C-q启用只读文件的编辑)。我似乎没有遇到任何问题,但是我猜建议使用一个叫做visudo的工具来编辑sudoers文件。Emacs对我而言可行,但你应该去查一下。

这样做通过给予sudo权限,仅限于PhantomJS应用程序,为apache用户显式授予了对PhantomJS应用程序的访问权限。


0

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


1
我已经检查了可执行文件的权限。它们是755,应该足够了。改成777,但仍然没有任何效果。谢谢。 - bearfriend

-1

我最近在CentOS 7环境下使用phantomjs时遇到了与op相同的问题。我尝试了在stackoverflow上找到的各种解决方案和方法,所以我不太确定哪种方法起作用了,或者是哪些方法共同解决了这个问题。我尝试了以下方法:

  1. 给phantomjs二进制文件、目标JS文件和包含目录赋予777权限(没有起作用)
  2. 使用visudo命令,允许apache无需密码即可使用phantomjs(没有起作用)
  3. 将apache添加到sys组(没有起作用)
  4. 禁用selinux,在禁用selinux并重新启动CentOS后,phantomjs开始在浏览器中工作了:D :D

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接