Выполнение команды командной строки с PHP - PullRequest
2 голосов
/ 01 апреля 2020

Итак, моя проблема заключается в следующем: у меня на сервере Ubuntu 18.04.3 есть файл разметки R, который я хочу связать через командную строку (это прекрасно работает с Rscript -e "rmarkdown::render('path/to/file.Rmd')"), поэтому я попытался запустить его из PHP с помощью команды exe c () (очевидно, с использованием escape-символов). Выходные данные PHP следующие: Execution haltedArray ( [0] => Error: unexpected input in "rmarkdown::render(\" [1] => Execution halted ) при выполнении следующих строк PHP:

exec("Rscript -e \"rmarkdown::render(\'path/to/file.Rmd\')\" 2>&1", $output);
print_r($output); 

Что такое неожиданный ввод?

1 Ответ

2 голосов
/ 01 апреля 2020

Не экранируйте внутренние '

exec("Rscript -e \"rmarkdown::render('path/to/file.Rmd')\" 2>&1", $output);

.. и не меняйте крайние строковые символы, чтобы использовать одинарные кавычки вместо двойных:

exec('Rscript -e "rmarkdown::render(\'path/to/file.Rmd\')" 2>&1', $output);

.. не избегайте обоих, если вы не используете оба, что уродливо и сбивает с толку

exec("Rscript -e \"rmarkdown::render(\\\"path/to/file.Rmd\\\")\" 2>&1", $output);

...