在操作系统X中将PhantomJS作为守护程序运行

时间:2013-02-20 20:26:38

标签: php javascript permissions command-line-interface phantomjs

我正在使用Zend框架和phantomJS来渲染我工作的网站的图像。我有一个作业监听器脚本循环并查找队列中的作业。找到作业后,它会使用作业消息中的数据构造phantomJS命令并执行命令 php的EXEC命令。

如果我自己从命令行启动作业监听器,这个过程很有用。但是,如果守护程序用户(OS X中的Web用户)尝试运行phantomJS,则不会发生任何事情。没有错误信息,没有。

我尝试了几件事,包括
 1. 将此行添加到sudoers守护程序ALL = NOPASSWD:/ usr / bin / phantomjs
 2. 授予phantomjs及其父目录777权限。
 3. 授予phantomjs的守护进程所有权

然而,尽管如此,我还是无法从Daemon用户那里获得执行phantomJS。

如果有人能指出我正确的方向或添加一些建议,我将非常感激。

提前致谢,

1 个答案:

答案 0 :(得分:2)

您可以尝试像服务一样运行phantomjs脚本,而不是通过EXEC命令运行它。

  

使用名为Mongoose的嵌入式Web服务器模块,PhantomJS脚本可以启动Web服务器。这是为了便于PhantomJS脚本与外界之间的通信,不建议用作通用生产服务器。

有关嵌入式Web服务器如何工作的信息,请参阅here

此处有一个关于PhantomJS脚本如何启动Web服务器的示例。

var server = require('webserver').create();
var service = server.listen('127.0.0.1:8080', function(request, response) {
    response.statusCode = 200;
    response.write('<html><body>Hello!</body></html>');
    response.close();
});

服务运行后,它可以作为响应发送一个JSON对象,可以很容易地被PHP解释。

收听任何域server.listen('8080', ....)

设置HTTP响应标头response.setHeader("Access-Control-Allow-Origin","*");