在 MediaWiki 扩展中调用 NodeJS 程序

Call NodeJS program in a MediaWiki extension

我正在创建一个 MediaWiki 扩展以在我的 wiki 上启用对 Argdown (https://argdown.org/) 的支持。 Argdown 解析器是用 NodeJS 编写的;让我的扩展 PHP 文件 运行 成为 NodeJS 程序的最佳方式是什么?

我在网上看到一些例子说用 exec 来做,但我的系统管理员说这是个坏主意 - 他说 exec 会造成安全和性能问题。有没有更好的方法?

MediaWiki 有一个 shell framework 就是为了这个目的。把这些放在我的文件的顶部之后...

use MediaWiki\Shell\Shell;
use MediaWiki\Logger\LoggerFactory;

...这是我在 PHP 函数中输入的内容:

global $IP;
$result = Shell::command( "/usr/local/bin/node", "$IP/extensions/Argdown/helloWorld.js" )->execute();
$stdout = $result->getStdout();
$stderr = $result->getStderr();
$ret = "<p>Stdout: $stdout</p>";
$ret .= "<p>Stderr: $stderr</p>";
return $ret;

我应该可以只输入 "node" 而不是 "/usr/local/bin/node",但这不起作用,我还没有弄清楚为什么 - 在命令行上写 node 有效很好。

感谢MediaWiki Discord上的志愿者们的帮助!