Rails + Passenger:无法执行shell命令

时间:2014-08-12 14:57:40

标签: ruby-on-rails ruby apache shell passenger

我已经设置了Apache + Rails + Passenger并正确加载了应用程序(大部分)。该应用程序使用Tesseract和GS将PDF转换为图像,然后获取文本并将其插入数据库。

当我使用rails s测试应用程序时,一切正常,但是当我尝试从乘客实例运行某些功能时,我的apache日志中出现以下错误:

  

App 14107 stderr:sh:tesseract:command not found

以下代码发生错误:

%x(gs -dNOPAUSE -dBATCH -sDEVICE=pngalpha -r300 -sOutputFile="page%03d".png #{self.doc.path})
%x(for f in page*.png ; do tesseract $f $f.out; done)

我的rails production.log文件中没有任何内容表明存在任何错误。

我正在运行CentOS 6,并使用本指南构建了我的tesseract: https://www.simpleservers.co.uk/clients/whmcs/knowledgebase/600/Install-Tesseract-OCR-libs-from-sources-in-Centos.html

乘客运行的用户也可以运行命令tesseract。我检查了它的控制台,但由于某种原因,乘客无法运行它。我是否需要以某种方式为apache用户启用它?

由于

1 个答案:

答案 0 :(得分:2)

感谢贝壳指向正确的方向。这就是我解决这个问题的原因:

Apache无法调用tesseract,因此我不得不将其添加到路径中。根据这个答案(How to add path to Apache),我去了/ etc / sysconfig / httpd(这是CentOS特定的)并添加了一行:

export PATH=<the path>

要获取路径,我只是在控制台中运行它:

env

并将输出作为PATH。