我正在尝试从运行在Linux上的Tomcat 7实例(Ubuntu 13.04)上的Grails应用程序运行PhantomJS。
我确定PhantomJS安装正确,因为我可以从命令行执行它。我用它来制作网页的屏幕截图(http://phantomjs.org/screen-capture.html)。
当我从命令行运行命令时,它运行良好,使用root用户:
phantomjs /home/user/captureScreen.js "http://xx.xx.xx.xx/chart" "/home/user/07012014050636114.png"
我相信没有必要共享JS代码,因为它在命令行中运行良好。
问题在于,当我从web-app(Grails)运行相同的命令时,它只返回一个0值,告诉我一切运行正常,但它没有创建PNG文件,也没有返回错误。 / p>
我正在以这种方式从Groovy调用命令:
String path = "phantomjs pathToJs.... etc"
def process = path.execute()
process.waitForOrKil(5000) // This runs in 1 to 2 seconds in the command line
println process.exitValue()
我尝试将tomcat7用户的写权限添加到JS文件所在的文件夹以及写入图像的位置,但仍然没有用,但我仍然相信它与权限有关
有什么想法吗?
谢谢!
答案 0 :(得分:1)
至于命令执行,我们在Grails应用程序中遇到了关于纯字符串表示法的问题。使用数组语法
["/usr/binphantom/js","/home/user/captureScreen.js","http://xx.xx.xx.xx/chart","/home/user/07012014050636114.png"].execute()
让事情发挥作用。我认为它与shell扩展有关,它在Groovy中处理字符串的方式不同。