通过PHP执行.exe文件

时间:2015-01-31 21:32:17

标签: 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打开了test.php,但那就是我遇到的问题。 浏览器现在没有响应,只是显示“等待localhost”,直到它超时。

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

2 个答案:

答案 0 :(得分:3)

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

我知道你要求使用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 &");  
    }
}
?>

答案 1 :(得分:0)

As the comments on the PHP EXEC page mention, you should run it as a background process, else it will wait for result.

I know you asked for windows, but this will make it easier to port if you ever use something else. Although that seems hard with an exe file, but for other uses maybe. As I guess "notepad.exe" is just an example and not what you actually want to run.