Php exec()返回值1073740791

时间:2018-05-04 22:34:12

标签: php windows xampp exec exe

我正在尝试使用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。

0 个答案:

没有答案