exec、system和shell_exec PHP函数中的命令字符串不能超过8175个字符

gmol1639  于 2023-10-15  发布在  PHP
关注(0)|答案(1)|浏览(146)

我遇到了一个问题,我需要在PHP中编写冗长的命令并执行它们。但是,当命令的长度超过8175个字符时,它将无法执行。有趣的是,如果我手动复制并粘贴相同的命令到终端,它运行没有任何问题。这里有一个基本的例子来说明这个问题:

$longCommand = "echo ".str_repeat("a",8171); // longCommand length = 8176 -> fails
exec($longCommand, $output);
print_r($output);

如果您将$longCommand字符串减少到8175个字符,它将成功执行。从PHP执行命令时,是否有字符限制?如果有,如何增加或绕过此限制?

smdnsysy

smdnsysy1#

刚刚发现这是Windows的官方记录限制:
可以在命令提示符下使用的字符串的最大长度为8191个字符。此限制适用于:命令行由其他进程继承的单个环境变量,如PATH变量所有环境变量扩展如果使用命令提示符运行批处理文件,则此限制也适用于批处理文件处理。
Source

相关问题