通过PHP执行.exe文件

通过PHP执行.exe文件,php,apache,xampp,exec,Php,Apache,Xampp,Exec,我有以下问题: 我在Windows 7 x64机器上运行XAMPP Apache服务器,我希望远程访问该机器,然后在其上执行程序。 现在我在htdocs目录中有两个文件,index.php和test.php index.php: <a href="test.php">Click here</a> test.php: <?php exec("C:\\xampp\\htdocs\\notepad.exe"); ?> index.php打

我有以下问题:

我在Windows 7 x64机器上运行XAMPP Apache服务器,我希望远程访问该机器,然后在其上执行程序。 现在我在htdocs目录中有两个文件,index.php和test.php

index.php:

  <a href="test.php">Click here</a> 

test.php:

    <?php
exec("C:\\xampp\\htdocs\\notepad.exe");
?> 

index.php打开了test.php,但这就是我被卡住的地方。 浏览器现在不响应,只显示“正在等待本地主机”,直到超时

我花了几个小时试图找出这个问题,但没有任何帮助

正如页面上的评论所述,您应该将其作为后台进程运行,否则它将等待结果

我知道你要求使用windows,但如果你使用其他软件,这将使移植更容易。虽然对于
exe
文件来说这似乎很难,但对于其他用途来说可能是这样。我猜“notepad.exe”只是一个例子,而不是您实际想要运行的

<?php
function execInBackground($cmd) {
    if (substr(php_uname(), 0, 7) == "Windows"){
        pclose(popen("start /B ". $cmd, "r")); 
    }
    else {
        exec($cmd . " > /dev/null &");  
    }
}
?>

正如PHP EXEC页面上的注释所述,您应该将其作为后台进程运行,否则它将等待结果


我知道你要求使用windows,但如果你使用其他软件,这将使移植更容易。虽然对于exe文件来说这似乎很难,但对于其他用途来说可能是这样。我猜“notepad.exe”只是一个示例,而不是您实际想要运行的内容。

Web服务器不是以登录到控制台的同一用户的身份运行的。它不能运行交互式图形程序,如
NotePad
。是的!我终于明白了,谢谢!在任务管理器中勾选“显示所有用户的进程”框后,我想运行20个notepad.exe。对我只是个白痴。
<?php
function execInBackground($cmd) {
    if (substr(php_uname(), 0, 7) == "Windows"){
        pclose(popen("start /B ". $cmd, "r")); 
    }
    else {
        exec($cmd . " > /dev/null &");  
    }
}
?>