Ошибка: невозможно определить переменную окружения SCIHOME
Я пытаюсь использовать Scilab через PHP на моем сервере, как описано в этом документе.
Я использую Ubuntu 16.04. У меня работает сервер Apache. Я установил Scilab с apt-get install scilab
, Я могу успешно написать код Scilab, как:
scilab -nwni -nb -e "m=[1 2 3; 3 4 5];disp(m);exit"
Поэтому сейчас я пытаюсь выполнить его из PHP. Я попробовал примеры в документе. Например:
<?php
exec('scilab -nwni -nb -e "m=[1 2 3; 3 4 5];disp(m);exit;"', $output);
print_r($output);
?>
Но я всегда получаю:
Error: Impossible to define SCIHOME environment variable.
SCIHOME not defined.
Я не знаю, что я делаю неправильно и как это исправить...
Любая помощь будет принята с благодарностью!
3 ответа
Хорошо, я наконец решил проблему. Я просто тупой. Вам просто нужно установить переменную вручную. Я уже пробовал это таким образом, но сделал ошибку в имени переменной...
exec('SCIHOME=/var/www/ scilab -nwni -nb -e "m=[1 2 3; 3 4 5];disp(m);exit;" 2>&1', $output);
У меня такая же проблема. Пытаться:
exec('sudo scilab -nwni -nb -e "m=[1 2 3; 3 4 5];disp(m);exit;" 2>&1', $output);
print_r($output);
Запустить sudo через пользователя www-data можно, если вы добавите разрешение, попробуйте:
sudo visudo -f /etc/sudoers
и добавить в конец файла
www-data ALL=(ALL) NOPASSWD: /usr/bin/scilab, /usr/bin/scilab-cli, /usr/bin/scilab-adv-cli
Я не уверен, если вам нужно добавить все эти файлы scilab.. может быть, только scilab.
Я вспоминаю кое-что о возможности нескольких файлов.ini для php, что означает, что выполнение cli и выполнение шлюза могут работать по-разному или неожиданно, поскольку они используют разные ini-файлы и / или получают разные разрешения из-за их выполнения пользователем: group. Имеет ли пользователь: группа, пытающаяся выполнить во втором экземпляре, разрешение на запись в среду, и вы получаете поведение, управляемое файлом.ini, который, по вашему мнению, вы получаете.
Просто мысль.