错误:无法定义 SCIHOME 环境变量

错误:无法定义 SCIHOME 环境变量

我正在尝试在我的服务器上通过 PHP 使用 Scilab,如这个文件

我正在运行 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.

我不知道我做错了什么以及如何解决它......

任何帮助将不胜感激 !

答案1

我也遇到了同样的问题。尝试:

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

可以通过 www-data 用户运行 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。

答案2

我记得 php 可能有多个 .ini 文件,这意味着 cli 执行和网关执行可能会以不同的方式或意外的方式工作,因为它们使用不同的 ini 文件和/或由于执行它们的用户:组而获得不同的权限。尝试在第二个实例中执行的用户:组是否有权写入环境,您是否获得了由您认为是从中获取的 .ini 文件控制的行为。

只是一个想法。

答案3

好吧,我终于解决了这个问题。我只是太笨了。你只需要手动设置变量。我已经试过了,但变量名错了……

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

相关内容