我正在尝试使用php中的exec()运行.exe文件并获取stdout输出并在php中使用它。问题是我没有得到输出$ line返回并且返回值为$ return是-1073740791。我无法找到任何解决方案。
代码:
<?php
if (isset($_GET["query"]) && isset($_GET["number"])) {
$file = 'src\\infix_to_postfix_and_evaluate.exe';
$input = $_GET["number"] . ' "' . $_GET["query"] . '"';
if (file_exists($file)) {
echo "<p>file " . $file . " exists</p>";
} else {
echo "<p>file " . $file . " does NOT exists</p>";
}
$return = 5;
$toexec = $file . " " . $input;
exec($toexec, $lines, $return);
//$lines = system($toexec, $return);
var_dump($toexec);
echo "<br>";
var_dump($lines);
echo "<br>";
var_dump($return);
echo "<br>";
foreach ($lines as $item) {
echo '<a href="./data/doc' . $item . '.txt">' . 'doc' . $item . '.txt' . "</a><br>";
echo "<br>";
}
} else {
echo "<p>its working but sadly not now (=_=)</p>";
}
?>
broswer页面中的输出是:
file src\infix_to_postfix_and_evaluate.exe exists
string(54) "src\infix_to_postfix_and_evaluate.exe 10 "cat AND dog""
array(0) { }
int(-1073740791)
我做了#34;你好世界&#34; test.exe,如果我改变这一行:
$file = 'src\\test.exe';
输出是:
file src\test.exe exists
string(29) "src\test.exe 10 "cat AND dog""
array(1) { [0]=> string(13) "Hello, World!" }
int(0)
docHello, World!.txt
所以text.exe可以工作。
当我从其他位置从终端运行我的程序时,它很奇怪。从src它工作,从父文件夹它不。 terminal image
请帮帮我吧!我在Windows上使用XAMPP和Apache。
PS:这是我的第一个问题,sry for English。