Rails + Passenger: не может выполнять команды оболочки

Я установил 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

Пользователь, от имени которого работает пассажир, также может запустить команду tesseract. Я проверил его консоль, но по какой-то причине пассажир не может управлять им. Мне нужно как-то включить его для пользователя apache?

Спасибо


person user2714286    schedule 12.08.2014    source источник
comment
«команда не найдена» на 99% является индикатором того, что / path / to / tesseract необходимо добавить в переменную PATH, видимую Apache. Удачи.   -  person shellter    schedule 12.08.2014
comment
Спасибо, это именно то, что мне нужно! Итак, следуя вашему совету, я зашел в / etc / sysconfig / httpd и добавил эту строку: export PATH = ‹путь›, и он выполнил команду :) (я нашел местоположение на этой странице: ссылка)   -  person user2714286    schedule 12.08.2014
comment
вы можете опубликовать это как ответ (добавьте, как вы определили правильное значение пути). и тогда вы сможете принять свой ответ через 48 часов (я полагаю), и вы получите ценные очки репутации! Удачи.   -  person shellter    schedule 12.08.2014


Ответы (1)


Спасибо Shellter за то, что указал мне в правильном направлении. Вот что решило проблему для меня:

Apache не мог вызвать tesseract, поэтому мне пришлось добавить его в путь. На основе этого ответа (Как добавить путь к Apache), я зашел в / etc / sysconfig / httpd (это специфично для CentOS) и добавил строку:

export PATH=<the path>

Чтобы получить путь, я просто запустил это в консоли:

env

И взял вывод для ПУТИ.

person user2714286    schedule 14.08.2014