Rails + Passenger: Не могат да се изпълняват команди на shell

Настроих Apache + Rails + Passenger и приложението се зарежда правилно (в по-голямата си част). Приложението използва Tesseract и GS, за да конвертира PDF файлове в изображения и след това да вземе техния текст и да го вмъкне в базата данни.

Когато тествам приложението с помощта на rails s, всичко функционира нормално, но когато се опитам да стартирам някои от функциите от екземпляра на пътника, получавам следната грешка в моя журнал на apache:

Приложение 14107 stderr: sh: tesseract: командата не е намерена

Грешката възниква за следния код:

%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 и създадох своя тесеракт с помощта на това ръководство: https://www.simpleservers.co.uk/clients/whmcs/knowledgebase/600/Install-Tesseract-OCR-libs-from-sources-in-Centos.html

Потребителят, от който се изпълнява пътникът, също може да изпълни командата teseract. Проверих в конзолата му, но по някаква причина пътникът не може да го стартира. Трябва ли по някакъв начин да го активирам за потребителя на apache?

Благодаря


person user2714286    schedule 12.08.2014    source източник
comment
'command not found' е 99% индикатор, че /path/to/tesseract трябва да се добави към променливата PATH, която е видима за Apache. Късмет.   -  person shellter    schedule 12.08.2014
comment
Благодаря, точно това ми трябваше! Следвайки съвета ви, влязох в /etc/sysconfig/httpd и добавих този ред: export PATH=‹the path› и той изпълни командата :) (Намерих местоположението от тази страница: връзка)   -  person user2714286    schedule 12.08.2014
comment
можете да публикувате това като отговор (добавете как сте определили коя е правилната стойност на пътя). и след това можете да приемете отговора си след 48 часа (вярвам), и ще спечелите ценни точки за репутация! Късмет.   -  person shellter    schedule 12.08.2014


Отговори (1)


Благодаря на Shelter, че ме насочи в правилната посока. Ето какво реши проблема за мен:

Apache не можеше да извика tesseract, така че трябваше да го добавя към неговия път. Въз основа на този отговор (Как да добавите път към Apache), отидох на /etc/sysconfig/httpd (това е специфично за CentOS) и добавих реда:

export PATH=<the path>

За да получа пътя, просто пуснах това в конзолата:

env

И взе резултата за PATH.

person user2714286    schedule 14.08.2014