Назад | Перейти на главную страницу

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

Не знаю, что делаю не так и как это исправить ...

Любая помощь будет принята с благодарностью!

У меня такая же проблема. Пытаться:

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, из которого, как вы думаете, вы его получаете.

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