0

我想将 MATLAB 输出传递给我的 php 代码。

我的 MATLAB 代码,我有:

function x = returnX()
    x = 100;
end


还有我的 PHP 代码:

<?php
     $command = "matlab -nojvm -nodesktop -nodisplay -r \"x = returnX();\"";
     passthru($command, $output);
     echo($output)
?>

但是,这打印的是 0,而不是 100。
当我在我的 cmd 中键入命令时,它显示 100。但是当我通过 PHP 代码尝试它时,它不起作用。谁能帮助我如何将 MATLAB 的输出值设置为 php 变量?谢谢!

4

2 回答 2

2

您应该使用exec返回标准输出的 ,而不是像passthru.

在 matlab 代码中显示输出:

function x = returnX()
    x = 100;
    display(x);
end

exec在php代码中使用:

<?php
     $command = "matlab -nojvm -nodesktop -nodisplay -r \"x = returnX();\"";
     $output=exec($command);
     echo($output)
?>
于 2012-10-28T04:32:59.697 回答
1

根据文档

如果 return_var 参数存在,Unix 命令的返回状态将被放置在这里。

您正在echo从 Matlab 命令返回值,而不是标准输出。由于命令执行正确,因此返回 0。 passthru()会将内容从标准输出“不受任何干扰”发送到客户端。

此外,请确保您的托管服务提供商允许您从 PHP 脚本中进行系统调用。许多主机出于安全原因禁用执行服务器端命令。查看对安全模式的支持以及disabled_functions在您的php.ini.

于 2012-10-28T04:32:38.167 回答