У меня есть сервер WAMP 3.1.3, на котором запущена главная страница HTML, которая принимает текстовые данные «начало», «конец» и «организация». Кнопка отправки, после чего информация передается в следующий скрипт php:
<?php
$from = strtotime($_POST["fromdate"]);
$to = strtotime($_POST["todate"]);
$org = $_POST["org"];
$python = "C:\Python27\python.exe ";
$pyscript = "C:\wamp64\www\DMARC\Sample_Reports\GetOutlookAttachments.py $from $to $org";
echo $python, $pyscript;
chdir("C:\wamp64\www\DMARC\Sample_Reports");
exec("$python $pyscript");
?>
Скрипт берет данные, преобразует их в нужный формат и передает их скрипту Python 2.7. Данные, которые получает скрипт python, используются для фильтрации некоторых журналов. Как только журналы отфильтрованы, скрипт Python вызывает скрипт R-markdown для создания отчета в формате HTML. Код Python, который вызывает скрипт rmarkdown:
cmd = '"C:/PROGRA~1/R/R-3.5.1/bin/x64/Rscript.exe -e \"Sys.setenv(RSTUDIO_PANDOC=\'C:/Program Files (x86)/Pandoc\'); rmarkdown::render(\'../Filter\ Tool/report.Rmd\')\""'
os.system(cmd)
Раньше я запускал скрипт python из cmd, предоставляя ему необходимые аргументы, и все работало нормально. Фильтрация, выполненная python, была правильной, rmarkdown анализировал логи и генерировал HTML-отчеты. Теперь, когда я пытаюсь запустить его из вызова PHP, я постоянно получаю следующее в apache_error.log:
Error in loadNamespace(name): there is no package called 'rmarkdown'
Я удостоверился, что R использует правильные пути для библиотек, указал путь в верхней части скрипта rmarkdown. Я убедился, что то, что входит в exec (), работает, вставляя его значение в cmd, и оно работает. Что-нибудь еще я могу попробовать?
EDIT:
В соответствии с запросом здесь находится верхняя часть скрипта уценки:
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
```{r include=FALSE}
library(XML)
library(methods)
library(readbulk)
library(zoo)
library(tidyr)
library(stringr)
library(data.table)
library(ggplot2)
library(plyr)
library(plotly)
library(IPtoCountry)
library(rworldmap)
library(knitr)
library(rmarkdown)
.libPaths(c("C:/Users/username/Documents/R/win-library/3.5", "C:/Program Files/R/R-3.5.1/library"))
```