1

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

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

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

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

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

提前致谢,

4

1 回答 1

2

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

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

有关嵌入式 Web 服务器如何工作的信息,请参见此处

这是一个关于 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","*");

于 2013-05-21T13:59:38.483 回答