#php #r #linux #server
#php #r #linux #сервер
Вопрос:
Я пытаюсь написать веб-приложение для запуска моего R-скрипта. Я планирую использовать php shell_exec(), чтобы это произошло.
Я написал тестовый скрипт, подобный этому <?php echo shell_exec("Rscript /var/www/html/demo/MyRScript.R"); ?>
Я запускаю его через командную строку. php test.php
, он выдает правильный вывод, я также просматриваю htop
и обнаружил, что процесс использует 100% cpu в течение нескольких минут.
Однако, когда я попытался запустить его, посетив его через браузер, через адрес http://myURL/demo/test.php
. Он не работал должным образом, он выдает только первые несколько строк моего R-скрипта onbrief Off On FALSE 405 0 TRUE 0 405 petitioner P R FALSE 0 396 TRUE 414 0
и немедленно останавливается. Я также не могу найти этот процесс htop
.
Я пробовал другую простую командную строку, например ls
, rm
, , все они работают правильно как в строке cmd, так и через веб-приложение.
Я понятия не имею, что не так. Может ли это быть из-за того, что процесс занимает слишком много процессора, поэтому какой-то механизм завершит его, если он вызывается через Интернет?
Или, если есть какой-либо инструмент или метод отладки, который я могу использовать, чтобы помочь мне найти проблему.
Это мой первый вопрос о переполнении стека, я не знаю, достаточно ли моей информации. пожалуйста, скажите мне, есть ли другая дополнительная информация, необходимая для решения проблемы.
Большое вам спасибо.
Комментарии:
1. CMD — это оболочка Windows. Ничего общего с Linux.
2. opps, я думал, что это то же самое с командной строкой.
3. Существует тег командной строки, но он не кажется полезным.
4. попробуйте добавить «2> amp; 1» в конец вашей команды — вы увидите ошибки прямо там (если они есть), возможно, это не очень хорошее решение для производства, но может помочь в среде разработки. в выходных данных может быть некоторый EOF. Время выполнения также может быть проблемой, поскольку вы описали, что ваш максимум составляет 100% в течение пары минут, а время выполнения php max_execution_time по умолчанию составляет всего 30 секунд.
5. Спасибо, ксива! После добавления «2> amp; 1» я могу найти ошибки и решить проблему!
Ответ №1:
Оказывается, проблема с правами доступа к файлам.
В моем R-скрипте есть строка, пытающаяся получить доступ к файлу, в то время как у пользователя веб-сервера www-data
нет разрешения на чтение. После предоставления ему разрешения все идет нормально.
Добавление 2>$1
в конце моей команды очень полезно, я могу получить сообщение об ошибке в моем браузере.