Я пытаюсь использовать 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.
Не знаю, что делаю не так и как это исправить ...
Любая помощь будет принята с благодарностью!
У меня такая же проблема. Пытаться:
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.
Хорошо, я наконец решил проблему. Я просто тупой. Вам просто нужно установить переменную вручную. Я уже пробовал этот способ, но ошибся в имени переменной ...
exec('SCIHOME=/var/www/ scilab -nwni -nb -e "m=[1 2 3; 3 4 5];disp(m);exit;" 2>&1', $output);
Я вспоминаю кое-что о возможности наличия нескольких файлов .ini для php, что означает, что выполнение cli и выполнение шлюза могут работать по-разному или неожиданно, потому что они используют разные файлы ini и / или получают разные разрешения из-за пользователя: группа, выполняющая их. Имеет ли пользователь: группа, пытающаяся выполнить во втором экземпляре, разрешение на запись в среду, и вы получаете поведение, управляемое файлом .ini, из которого, как вы думаете, вы его получаете.
Просто мысль.