如何在PHP exec中执行多个命令

nc1teljy  于 2023-01-16  发布在  PHP
关注(0)|答案(1)|浏览(228)

我在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。
怎么了,拜托?

wnavrhmk

wnavrhmk1#

use:

<?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:\folder1\command1.exe && c:\folder2\command2.exe";

相关问题