错误:无法定义SCIHOME环境variables

我试图通过PHP在我的服务器上使用Scilab,如本文档中所述 。

我正在运行Ubuntu 16.04。 我有一个Apache服务器运行。 我用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); 

通过www数据用户运行sudo是可能的,如果您添加权限,请尝试:

 sudo visudo -f /etc/sudoers 

并添加到文件的末尾

  www-data ALL=(ALL) NOPASSWD: /usr/bin/scilab, /usr/bin/scilab-cli, /usr/bin/scilab-adv-cli 

我不知道,如果你必须添加所有这些scilab文件..也许只有scilab。

我记得一些有关PHP的多个.ini文件的可能性,这意味着cli执行和网关执行可能会不同或意外的工作,因为他们使用不同的ini文件和/或获得不同的权限,由于用户:组执行它们。 试图在第二个实例中执行的用户组是否有权写入环境,并且是否获得了您认为从中获得的.ini文件的行为。

只是一个想法。

好的,我终于解决了这个问题。 我只是愚蠢的 你只需要手动设置variables。 我已经试过这种方式,但在variables名称中出现错误…

 exec('SCIHOME=/var/www/ scilab -nwni -nb -e "m=[1 2 3; 3 4 5];disp(m);exit;" 2>&1', $output);