Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过php窗口编写八度脚本_Php_Windows_Octave - Fatal编程技术网

通过php窗口编写八度脚本

通过php窗口编写八度脚本,php,windows,octave,Php,Windows,Octave,我正在尝试通过PHP运行一个八度脚本。我已经在谷歌上搜索了一些结果,但没有一个对我有用。我尝试了exec()和system()。我甚至创建了一个名为“octave myScript.m”的批处理文件,并使用PHP的system()调用了这个bat文件,但它似乎不起作用。在浏览器页面中,我只看到了“C:/FOLDER\u PATH>octave myScript.m”。octave脚本只是创建一个新文件并向其中写入一些文本。当我直接运行bat文件(双击它)时,文件被正确创建。我还向octaverc

我正在尝试通过PHP运行一个八度脚本。我已经在谷歌上搜索了一些结果,但没有一个对我有用。我尝试了exec()和system()。我甚至创建了一个名为“octave myScript.m”的批处理文件,并使用PHP的system()调用了这个bat文件,但它似乎不起作用。在浏览器页面中,我只看到了“C:/FOLDER\u PATH>octave myScript.m”。octave脚本只是创建一个新文件并向其中写入一些文本。当我直接运行bat文件(双击它)时,文件被正确创建。我还向octaverc文件添加了文件夹路径,但它似乎不起作用。我需要用八度音阶进行一些图像处理,我已经为此编写了脚本。我需要在客户端请求时调用此脚本,并将结果发送回客户端。我正在通过一个示例脚本检查调用过程,正如我前面提到的,该脚本创建了一个新文件。我做错了什么

我的php代码如下:

$cmd = "cmd /c C:\PATH_TO_BAT_FILE\myBat.bat";
exec($cmd,$output);
system($cmd);
echo implode ("\n",$output);
C:\PATH_TO_BAT_FILE>octave temp.m C:\PATH_TO_BAT_FILE>octave temp.m
请注意,我的路径包含双反斜杠以避免转义序列字符

我的bat文件是这个

octave temp.m
我的倍频程代码(temp.m)是这样的

网页上的输出为:

$cmd = "cmd /c C:\PATH_TO_BAT_FILE\myBat.bat";
exec($cmd,$output);
system($cmd);
echo implode ("\n",$output);
C:\PATH_TO_BAT_FILE>octave temp.m C:\PATH_TO_BAT_FILE>octave temp.m
我可以在任务管理器中看到,每当我在浏览器中运行PHP脚本时,就会创建一个新进程(我猜它是cmd)。 另外,当我将bat文件更改为

echo hello
我可以在我的浏览器页面中看到以下内容

 C:\PATH_TO_BAT_FILE>echo hello hello C:\PATH_TO_BAT_FILE>echo hello hello 
因此,这可能意味着bat文件得到了正确的执行。但是当我用“octave MY_file.m”替换bat文件脚本时,我无法看到输出。这可能意味着我的八度音阶配置不正确?还是我遗漏了什么

任何帮助都将不胜感激


谢谢

如果要在php中运行批处理文件来创建它,那么php命令应该是这样的

exec('cmd.exe /c C:\path\to\test.bat');

这很尴尬,但我给出了完整的路径来解决它。在bat文件中,我指定了octave.exe的完整路径(C:\Software\path_TO_octave.exe)和“.m”文件的完整路径。
在我的php中,我只使用了exec()

如果您可以在源代码中看到php源代码,那么您没有启用php。请解释一下?我不理解我从中得出的结论:在浏览器页面中,我只是看到'C:/FOLDER\u PATH>octave myScript.m'“。事实上,你能告诉我们你在尝试什么代码吗。编辑问题以包括我的代码。我已经试过了。它不起作用。我的php代码是这样的:它不是
cmd.exe/c:\\path\\to\\test.bat
?否则,你就可以拿到你的账单了\t@LozCherone是的,我相信你是对的,它不需要转义,除非你使用双引号。修改了。编辑了问题。希望这能让我的问题更清楚