Запустите R в PHP под Ubuntu - PullRequest
       13

Запустите R в PHP под Ubuntu

3 голосов
/ 06 ноября 2011

У меня есть скрипт R, который прекрасно работает, когда я запускаю его из командной строки и сохраняю образ в файловую систему.Однако, когда я запускаю его из скрипта php, используя следующую команду:

exec("cat my_rscript.R | /usr/bin/R --vanilla");

Он не запускается.Обратите внимание, что когда я запускаю его в командной строке, я использую точно такой же вызов.Я почти уверен, что нахожусь в правильном каталоге (php-файл и R-скрипт находятся в одном каталоге).Что может быть причиной того, что я не могу запустить скрипт R из php?Я думаю, что это связано с тем, что я использую R-64 бит, а php только 32 бит, однако я не уверен, что это проблема.

1 Ответ

2 голосов
/ 06 ноября 2011

Я бы порекомендовал следующие шаги для отладки, все через команды в оболочку из PHP:

  1. Получите вывод which R (убедитесь, что он находится в пути) (например, which R > where_is_r.txt
  2. Получите местоположение, где ваша оболочка начинает выполнение, то есть путь, из которого вызывается R (это должно быть расположение файла "where_is_r.txt")
  3. Создайте простой helloworld.r (например, запишите нормально распределенные случайные значения в текстовый файл) и выполните Rscript --vanilla /path/to/helloworld.r
  4. Замените helloworld.r вашим скриптом и выполните Rscript --vanilla /path/to/my_script.R

Если они не показывают, в чем проблема, вам может потребоваться сохранить выходные данные ошибки (STDERR) и выходные данные (STDOUT). Это можно сделать внутри R, но лучше сделать это через bash. См. на этой странице , чтобы узнать, как сделать это перенаправление.

Кроме того, в общем случае лучше использовать полностью указанные пути, а не зависеть от оболочки, вызываемой в определенном каталоге. Полная спецификация может быть как абсолютным, так и относительным путем, но относительные пути и символические ссылки немного сложнее отладить, чем абсолютные пути.

...