Ошибка: невозможно определить переменную окружения 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, который, по вашему мнению, вы получаете.

Просто мысль.

Другие вопросы по тегам