Rscript ведет себя по-разному при запуске из командной строки и из PHP exec

Привет, я запускаю Rscript с PHP exec, и он ведет себя странно ...... Он запускает R, но выдает ошибку в следующей строке: -

filein = filein[,c("id","bank","trans_date","description","description_2",
                 "description_3","description_4","description_5" ,"type",
                 "debit","credit","statement_balance", "cleared_balance",
                 "debit_int_rate","credit_int_rate","category")]

Этот простой переупорядочивает столбцы в наборе данных.

Выдает следующую ошибку: -

Ошибка в

[.data.frame`(filein, , c("id", "bank", "trans_date", "description", 
:  undefined columns selected

Однако я запускаю тот же скрипт из командной строки, он работает без ошибок.

(Я запускаю Rscript на компьютере с Ubuntu 14.04 с PHP5...... также, когда я запускаю тот же скрипт на компьютере с Windows с PHP, он также работает отлично)

У кого-нибудь есть идеи, почему это так?


person user2987739    schedule 12.02.2015    source источник
comment
Вы уверены, что символ _ каким-то образом не читается по-другому, когда вы импортируете фрейм данных с помощью PHP5? -- проверьте, как названы столбцы, добавив print colnames(filein). Я думаю, что это может быть проблема с разбором текста, которая изменяет имя столбцов.   -  person selenocysteine    schedule 12.02.2015
comment
PHP работает под другими правами, чем Rscript, поэтому у него может не быть доступа к файлу.   -  person LauriK    schedule 12.02.2015
comment
@LauriK Точнее, веб-сервер работает под разными правами, чем пользователь (другими словами, если скрипт PHP вручную запускается пользователем на консоли, php будет запускать точно с теми же правами, что и Rscript). Но суть та же.   -  person Konrad Rudolph    schedule 12.02.2015
comment
@KonradRudolph Спасибо! Моя карьера системного администратора веб-сервера длилась всего два месяца, поэтому у меня есть некоторые базовые знания и я могу отлаживать проблемы с разрешениями и зависимостями, но я далек от систематического понимания.   -  person LauriK    schedule 12.02.2015
comment
Согласитесь, что это, вероятно, проблема с правами доступа к файлам. Попробуйте добавить проверку, когда вы читаете файл, чтобы увидеть, читается ли он что-нибудь... if(nrow(dataframe) == 0)stop(dataframe не читается должным образом)   -  person cory    schedule 12.02.2015
comment
Спасибо за всю вашу помощь .... Так что это не проблема с разрешениями ...... проблема заключалась в следующем: ---- команда, запускаемая из php exec, была ( Rscript Myfile.r localhost/categorisation/public/1423746975.json ) Однако аргумент, полученный R, был localhost/categorisation/public/1423746975.json2 По какой-то причине комбинация ubuntu/php добавила 2 в конец аргумента строка .... когда я удалил 2 в сценарии R, он работал правильно   -  person user2987739    schedule 12.02.2015


Ответы (1)


Спасибо за всю вашу помощь .... Так что это не была проблема с разрешениями (я исправил их ранее). ...... проблема заключалась в следующем: ---- Команда, переданная в командную строку PHP exec, была < strong> sudo /Rscript /home/xin/Documents/ClassificationApp/ClassificationAllInOne.R "http://localhost/categorisation/public/classification/data/1423746975.json

Однако аргумент, полученный R, был «localhost/categorisation/public/1423746975.json2»;

По какой-то причине комбинация Ubuntu/PHP добавила 2 в конец строки аргумента... Я добавил строку в ClassificationAllInOne.R, чтобы убрать 2, и она отлично сработала.

person user2987739    schedule 12.02.2015