Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.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 exec-缺少输出_Php_Windows_Exec_Sox - Fatal编程技术网

PHP exec-缺少输出

PHP exec-缺少输出,php,windows,exec,sox,Php,Windows,Exec,Sox,我目前正试图让SoX通过PHP工作。到目前为止一切正常,但我没有得到输出。我已经读过一篇文章,可能会将stderr也路由到带有2>&1。。问题是,这在windows机器上似乎不起作用 还有其他想法吗 代码如下: exec($path2sox . '/sox ' . $cmd . ' 2>&1', $output = array(), $result); 虽然创建了该文件,因此基本sox命令是可以的,但我也在windows命令行中测试了完全相同的命令,但结果和输出都没有返回什么,sox详细性设置为

我目前正试图让SoX通过PHP工作。到目前为止一切正常,但我没有得到输出。我已经读过一篇文章,可能会将stderr也路由到带有2>&1。。问题是,这在windows机器上似乎不起作用

还有其他想法吗

代码如下:

exec($path2sox . '/sox ' . $cmd . ' 2>&1', $output = array(), $result);
虽然创建了该文件,因此基本sox命令是可以的,但我也在windows命令行中测试了完全相同的命令,但结果和输出都没有返回什么,sox详细性设置为4,这是完全输出

我想,windows不理解2>&1语句,但如何克服这一问题

附言:正如下面建议的,我也试过这个

$output = array();
echo "Executing: [$path2sox/sox $cmd]";
exec("$path2sox/sox $cmd", $output, $result);
echo "Result: ";
var_dump($result);
echo "\n
Output: "; var_dump($output);
其中输出为: Executing: [I:\SoX/sox --guard -V4 "somedirectory/test.wav" --compression "320.2" "somedirectory/test.mp3"]Result: int(0)


Output: array(0) { }
文件已正确创建…

是否正在传递第二个输出数组参数

输出

如果存在输出参数, 然后指定的数组将被删除 填充了来自的每一行输出 命令。尾随空格,如 作为\n,不包括在此数组中。 请注意,如果数组已经 包含一些元素,exec将 附加到数组的末尾。如果你 不希望函数追加 元素,在数组上调用unset 在将其传递给exec之前


是否正在传递第二个输出数组参数

输出

如果存在输出参数, 然后指定的数组将被删除 填充了来自的每一行输出 命令。尾随空格,如 作为\n,不包括在此数组中。 请注意,如果数组已经 包含一些元素,exec将 附加到数组的末尾。如果你 不希望函数追加 元素,在数组上调用unset 在将其传递给exec之前


我怀疑您可能是对的,windows不喜欢2>&1语句。您在尝试时看到了什么:

$output = array()
echo "Executing: [$path2sox/sox $cmd]";
exec("$path2sox/sox $cmd", $output, $result);
echo "Result: ";
var_dump($result);
echo "\n<br>Output: ";
var_dump(output);

我怀疑您可能是对的,windows不喜欢2>&1语句。您在尝试时看到了什么:

$output = array()
echo "Executing: [$path2sox/sox $cmd]";
exec("$path2sox/sox $cmd", $output, $result);
echo "Result: ";
var_dump($result);
echo "\n<br>Output: ";
var_dump(output);

请分享你正在使用的代码。请分享你正在使用的代码。我怀疑这是他的问题,这就是为什么我要代码。对不起,我今天的票用完了!没什么大不了的,rep对我来说已经没有什么意义了;我想穿上你的鞋子我也会有同样的感觉。代表人数是我的10倍多,而你在网站上的时间更短。很好的工作:-我怀疑这是他的问题,这就是为什么我要求代码。对不起,我今天的票用完了!没什么大不了的,rep对我来说已经没有什么意义了;我想穿上你的鞋子我也会有同样的感觉。代表人数是我的10倍多,而你在网站上的时间更短。干得好:-因为结果是0,这似乎表明呼叫成功。当您在命令行下运行I:\SoX/SoX-guard-V4 somedirectory/test.wav-compression 320.2 somedirectory/test.mp3时会发生什么?我得到了大约40行SoX的调试输出,其中包含关于编码器等源文件的信息。如果您用绝对路径替换somedirectory/test.wav和somedirectory/test.mp3会发生什么?你是在开玩笑吗?无意冒犯,但你的回答似乎有点随意。。当从相对路径更改为绝对路径时,输出中应该更改什么?由于结果为0,这似乎表明调用成功。当您在命令行下运行I:\SoX/SoX-guard-V4 somedirectory/test.wav-compression 320.2 somedirectory/test.mp3时会发生什么?我得到了大约40行SoX的调试输出,其中包含关于编码器等源文件的信息。如果您用绝对路径替换somedirectory/test.wav和somedirectory/test.mp3会发生什么?你是在开玩笑吗?无意冒犯,但你的回答似乎有点随意。。当从相对路径更改为绝对路径时,输出中应该更改什么?