php exec() 未显示预期输出

php exec() not showing expected output

我正在尝试 运行 在 php 上执行 cpp 可执行文件,但它不起作用。请帮忙。

 var_dump(shell_exec("D:\c_cpp_programs\string.exe"));
 $output = system('D:\c_cpp_programs\string.exe', $retval);
 var_dump($output);
 passthru ('D:\c_cpp_programs\string.exe');
 if(file_exists('D:/c_cpp_programs/string.exe'))
    echo "File exist";
 exec('D:/c_cpp_programs/string.exe',$array,$error);
 var_dump($array);
 var_dump($error);

下面是我得到的输出,

C:\wamp64\www\chatclub\application\views\test.php:2:null
C:\wamp64\www\chatclub\application\views\test.php:4:string '' (length=0)
File exist
C:\wamp64\www\chatclub\application\views\test.php:9:
array (size=0)
  empty
C:\wamp64\www\chatclub\application\views\test.php:10:int -1073741515

cpp程序是,

#include<iostream>
using namespace std;

int main(){   
    cout<<"Hello"<<endl;
    return 0;
}

给我 PHP Interactive shell 上的输出,

C:\Users\Shoyeb>php -a
Interactive shell

php > var_dump(shell_exec("D:\c_cpp_programs\string.exe"));
string(5) "Hello"
php > var_dump(shell_exec("D:\c_cpp_programs\string.exe"));
string(6) "Hello
" <----- this output is with <<endl
php > var_dump(shell_exec("D:\c_cpp_programs\string.exe"));
string(5) "Hello"
php >

 

您可以使用:

exec("D:/c_cpp_programs/string.exe", $out);

请注意 $out 将保留输出。
记住shell_execreturns所有的输出流都是一个字符串,但是execreturns最后一行输出。

我不是 cpp 专家,但 <<endl 可能会输出一个空字符串。我不确定。

当我以管理员权限启动 wamp 时,我终于得到了输出,

C:\wamp64\www\chatclub\application\views\test.php:2:string 'Hello
' (length=6)
Hello
C:\wamp64\www\chatclub\application\views\test.php:4:string 'Hello' (length=5)
Hello File exist
C:\wamp64\www\chatclub\application\views\test.php:9:
array (size=1)
  0 => string 'Hello' (length=5)
C:\wamp64\www\chatclub\application\views\test.php:10:int 0