【问题标题】:How to execute multiple commands in PHP exec如何在 PHP exec 中执行多个命令
【发布时间】:2023-01-13 23:41:49
【问题描述】:

我在 Windows 11 中使用 PHP。我需要在 PHP exec 中执行多个命令。

我的示例代码如下:

$output=null;
$result_code=null;
exec("cd E:/Python/WordFrequency ; ipconfig", $output, $result_code);
return $result_code;

返回错误代码为 1。

但是,如果只执行一个命令,它可以正常工作:

exec("cd E:/Python/WordFrequency", $output, $result_code);

或者:

exec("ipconfig", $output, $result_code);

返回码全为0。

但是,如果将两个命令连接起来,将返回代码 1。

我努力了 ”;”替换为“&&”,和/或使用 escapeshellcmd 或 escapeshellarg 设置命令,如下所示:

exec(escapeshellcmd("cd E:/Python/WordFrequency ; ipconfig"), $output, $result_code);

但是结果是一样的,返回错误码1。

请问有什么事吗?

【问题讨论】:

  • 如果您可以一个接一个地运行这两个命令,那么为什么您一定要同时运行这两个命令...?
  • @Juan 这是示例代码。当然,这两个命令可以分开执行。我只是以这段代码为例。本质上,我想知道如何同时执行多个命令。
  • 我无法解决您的问题,但我总是将人们指向 proc_open 而不是让您可以访问 stdout 和 stderr 之类的东西以更好地调试东西。

标签: php exec


【解决方案1】:

利用:

<?php

$commands = "command1.exe && command2.exe && command3.exe";
exec($commands, $output, $result_code);

if ($result_code!== 0) {
    throw new Exception("Failed to execute commands: $commands");
}
var_dump($output);   // the output from the commands

&& 运算符在 Windows 命令提示符中用于一个接一个地运行多个命令。 您还可以考虑使用 & 运算符同时运行多个命令。

以这种方式使用它,您应该得到与在 Windows 命令行中手动运行它相同的结果。

边注: 我想知道环境设置是否与Windows命令行中的设置完全相同。换句话说:可能不会通知%PATH% 等环境变量。如果您遇到问题,请确保将完整路径添加到命令中。例如:

$commands = "c:older1command1.exe && c:older2command2.exe";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-27
    • 2013-09-07
    • 2023-03-06
    • 1970-01-01
    • 2012-08-18
    • 2017-05-06
    • 2013-07-28
    • 1970-01-01
    相关资源
    最近更新 更多