我在 PHP 中使用 exec() 函数通过 CLI 运行 JavaScript 文件。 JavaScript 简单地使用 process.argv[n] 来获取从 exec() 传入的参数。
在传递其他参数时一切都按预期工作,但是,我想传递一个 base64 字符串作为参数。该字符串非常大,并通过警告破坏了 exec() 函数,让我知道该函数无法分叉。
这可能与内存限制有关吗?我不确定如何解决这个问题。
这里是相关程序的整个 PHP 部分:
<?php
$path = './exampleDir/example.png';
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = base64_encode(file_get_contents($path));
$base64 = "data:image/".$type.";base64,".$data;
$cfPage = "index";
$iwidth = "400";
$iheight = "425";
$iaspect = $iwidth/$iheight;
exec("node ./scripts/test.js ".$cfPage." ".uniqid()." ".$iaspect." ".$base64);
?>
我试过将长度小于 100 个字符的简单字符串传递到 exec() 中,它传递得很好。我相信字符串的长度是问题所在,也许这与内存限制有关?