【发布时间】: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:参数列表太长
我对此进行了调查,显然这是与控制台允许执行命令的最大长度有关的问题,并且有必要增加限制。最后,我能够增加“堆栈大小”并使其不受限制以测试它是否有效,但它不断向我抛出同样的错误。
如果有人能指导我如何解决这个问题,我将不胜感激。该项目在 Apache2 上使用 ubuntu 的 linux 服务器上运行。
【问题讨论】:
-
php 是否有一个
exec版本,它接受一个命令和一个参数列表,而不是一个组合它们的字符串? -
你能把很长的参数放到一个临时文件中,然后让 Python 读取这个文件吗?甚至可以将长参数读取为标准输入。
-
Linux 不允许您在单个参数中放入超过 128k 的数据,无论堆栈大小如何。