Использование R через PHP

Я относительно новичок в R и очень новичок в командной строке Linux (Ubuntu). Я пытаюсь написать страницу на PHP, которая содержит команду, которую я хотел бы выполнить в R, а затем передать результаты, чтобы иметь возможность работать с ними. Я пробовал варианты кода ниже, но я получаю только приветственное сообщение R в качестве моего вывода:

<?php $rQuery = "\"echo 3 + 1;\" | /usr/bin/R --no-save"; exec($rQuery, $output); print_r($output); ?> 

Когда я вручную набираю $ rQuery в командной строке, результат будет тем, что я ожидал бы: [1] 4.
Я знаю, что мне, должно быть, чего-то не хватает, но я не смог разобраться в своих поисках.

Solutions Collecting From Web of "Использование R через PHP"

Пара пунктов:

  1. Вы хотите --slave в качестве опции, это означает --no-save и отключает приветствие; см. руководство для большего.

  2. То, что вы действительно хотите, – отличный R-inside-Apache Джефф Хорнер, см. Здесь больше . Он может использовать шаблоны для шаблонов, например, для варки . Лучше всего, Jeff теперь предоставляет пакет .deb для вас: используйте deb http://ppa.launchpad.net/jeffreyhorner/rapache/ubuntu lucid main в /etc/apt/sources.list .

  3. Если вы настаиваете на подключении к php, подумайте, что Littler скриптовый интерфейс Jeff и я написал. Он начнется быстрее, чем R.

Для чего-то такого простого, вы не должны даже использовать PHP, потому что вы можете делать это исключительно с помощью RApache, пакета для brew и простого HTML (CSS / JS являются необязательными). Просто прочитайте руководство по RApache и посмотрите видеоурок Jeroen Ooms . Вы также должны прочитать руководство по brew . Джефф действительно отлично поработал!

В двух словах вам просто нужно настроить файл apache2.conf или .htaccess . Вместо использования директив <Directory> или <Location> вы можете использовать директиву <FilesMatch> чтобы вы могли сопоставлять файлы с помощью regexpr. Вот пример .htaccess :

 <FilesMatch "^.+\.rhtml$"> SetHandler r-script RHandler brew::brew </FilesMatch> 

Я использую специальное расширение файла .rhtml где я смешиваю HTML с синтаксисом R в тегах <% и %> (см. Документацию на основе brew ). Я не использовал brew с PHP, потому что brew с HTML сделал трюк.

В любом случае, вы сказали, что хотите:

написать страницу на PHP, которая содержит команду, которую я хотел бы выполнить в R, а затем передать результаты, чтобы иметь возможность работать с ними

  • о выполнении команд с пользовательского ввода … ну … не делайте этого! Особенно это не позволяет пользователям выполнять пользовательские команды, потому что они могут легко передавать system или file.* Команды и беспорядок в вашей системе! Вы можете использовать AppArmor, но это еще далеко …
  • сосредоточиться на простых HTML-формах и использовать переменные POST , GET , COOKIES , FILES и SERVER, которые предоставляет RApache, а затем управлять входами внутри R-скрипта
  • о «передаче результатов назад», вы можете использовать либо пакет XML R, либо rjson (мой любимый, и я рекомендую его). Затем вы можете передать объект toJSON функции toJSON и неэриализовать его с помощью JavaScript. Конечно, это верно, только если ваши клиенты являются веб-браузерами, иначе, если вы, скажем, хотите передать некоторую информацию во встроенную систему, вы должны использовать стандартный XML путь
  • для чего-то такого простого, вам не нужен PHP. В любом случае, вам следует связаться с Jeroen, я знаю, что он использовал какой-то PHP в своем приложении Stockplot

Для получения дополнительных вопросов используйте список рассылки RApache .

… и привет Р-webdev мир! знак равно

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