我正在使用Zend框架和phantomJS来渲染我工作的网站的图像。我有一个作业监听器脚本循环并查找队列中的作业。找到作业后,它会使用作业消息中的数据构造phantomJS命令并执行命令 php的EXEC命令。
如果我自己从命令行启动作业监听器,这个过程很有用。但是,如果守护程序用户(OS X中的Web用户)尝试运行phantomJS,则不会发生任何事情。没有错误信息,没有。
我尝试了几件事,包括
1. 将此行添加到sudoers守护程序ALL = NOPASSWD:/ usr / bin / phantomjs
2. 授予phantomjs及其父目录777权限。
3. 授予phantomjs的守护进程所有权
然而,尽管如此,我还是无法从Daemon用户那里获得执行phantomJS。
如果有人能指出我正确的方向或添加一些建议,我将非常感激。
提前致谢,
丹
答案 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","*");