Я пытаюсь запустить файл .exe с помощью exec () в php, получить вывод stdout и затем использовать его в php. Проблема в том, что я не получаю выходных данных, поскольку $ строк возвращено, а возвращаемое значение в виде $ 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>";
}
?>
Вывод на странице в обозревателе:
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)
Я сделал "Hello World" 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 это работает, а из родительской папки - нет.
изображение терминала
Помогите мне, пожалуйста! Я на Windows, используя XAMPP с Apache.
PS: Это мой первый вопрос, извините за английский.