【问题标题】:python: Argument list too longpython:参数列表太长
【发布时间】:2021-10-11 20:25:37
【问题描述】:

我正在开发一个使用 python 脚本的 PHP back。在 PHP 中,执行查询和处理,最后作为参数传递给脚本,使用最终使用 exec () 执行的命令创建一个字符串

$arg4Json= str_replace("'", "´", json_encode($arg4));
$command = "python ../path/of/file"
    . "/script.py {$arg1} "
    . "{$arg2} {$arg3} '{$arg4Json}'";    
$output = null;
$returnVal = null;
exec($command, $output, $returnVal);

这是完美的工作。但是,在某个查询中,arg4Json 太长并且服务崩溃。尝试使用相同的参数直接在控制台中运行命令并返回消息:

python:参数列表太长

我对此进行了调查,显然这是与控制台允许执行命令的最大长度有关的问题,并且有必要增加限制。最后,我能够增加“堆栈大小”并使其不受限制以测试它是否有效,但它不断向我抛出同样的错误。

ulimit_list

如果有人能指导我如何解决这个问题,我将不胜感激。该项目在 Apache2 上使用 ubuntu 的 linux 服务器上运行。

【问题讨论】:

  • php 是否有一个 exec 版本,它接受一个命令和一个参数列表,而不是一个组合它们的字符串?
  • 你能把很长的参数放到一个临时文件中,然后让 Python 读取这个文件吗?甚至可以将长参数读取为标准输入。
  • Linux 不允许您在单个参数中放入超过 128k 的数据,无论堆栈大小如何。

标签: python php linux ubuntu


【解决方案1】:

为什么不将参数放在文件中。并更改程序的行为以从文件中读取参数,而不是将它们作为参数传递。我认为它更有效

【讨论】:

    猜你喜欢
    • 2019-06-03
    • 2017-11-30
    • 2020-05-09
    • 2014-05-21
    • 2015-04-04
    • 2021-10-26
    • 2014-04-18
    • 2021-10-28
    • 1970-01-01
    相关资源
    最近更新 更多