【问题标题】:PHP Shell_exec - Powershell not runningPHP Shell_exec - Powershell 未运行
【发布时间】:2016-10-18 12:31:54
【问题描述】:

我正在尝试运行这个:

shell_exec("powershell -File C:\inetpub\wwwroot\altirisinstall\startinstall.ps1 $computername > /dev/null &");

只要我删除它就可以正常工作:

/dev/null &

但是,这会使网站暂停并等待脚本完成。当我包含它时,脚本永远不会运行。

我也试过这个,它也停止了 ps1 的运行:

/dev/null 2>&1 &

编辑: 我需要一种方法让我的 php 在 Windows 服务器上运行 powershell 脚本,而不是等待响应。等待会导致我的网站挂起并阻止用户运行新命令。我研究并找到了上述解决方案,但有人指出这些是针对 linux 服务器的。还有其他方法可以执行我的 powershell 脚本而不等待响应吗?

编辑2: 我现在根本无法启动powershell,sql命令运行正常并且页面刷新,但是powershell永远不会运行,这里是代码:

<?php
if(isset($_POST['Submit'])) {
    $connectionInfo = array( "Database"=>"database", "UID"=>"username", "PWD"=>"password");
    $conn = sqlsrv_connect( "server", $connectionInfo);
    $params = array();
    $username = $_SERVER['AUTH_USER'];
    $computername = $_POST['CName'];
    $time = date("m/d - g:i a");
    $sql2 = "INSERT INTO dbo.Installs (Hostname, Status, Username, Time) VALUES (?, ?, ?, ?)";
    $var = array($computername, "InProgress", $username, $time);
    sqlsrv_query($conn, $sql2, $var);
    sqlsrv_close($conn);

    shell_exec("powershell.exe -File C:\inetpub\wwwroot\altirisinstall\startinstall.ps1 $computername");
    sleep(5);

    header("Refresh:0");
}
?>

【问题讨论】:

  • Windows 没有 /dev/null 这样的东西。
  • 啊,那很不幸。这就解释了为什么它不起作用。
  • &gt; NUL 在windows中应该是一样的
  • 这不是您链接的 Koen 的重复问题。

标签: php powershell shell-exec


【解决方案1】:

这个问题没有解决方案。这是 IIS 中的一项安全措施,我不想花时间去尝试。我为此走了一条不同的路线,感谢您的所有帮助。

【讨论】:

    猜你喜欢
    • 2020-09-04
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多