【问题标题】:Use Lua sandbox with MediaWiki under Windows在 Windows 下使用 Lua 沙箱和 MediaWiki
【发布时间】:2021-06-10 12:18:09
【问题描述】:

我在 Windows 服务器上运行 MediaWiki (1.34.1)。 wiki 包含一些 Lua 模块,这些模块由运行 Lua 5.1.4 的 Scribunto 扩展执行。 到目前为止,我正在使用 luastandalone,但我想使用 luasandbox 引擎(应该更快)。

在最新的 PHP luasandbox 版本 4.0.2 中,PECL 提供了一个 Windows DLL (https://pecl.php.net/package/LuaSandbox/4.0.2/windows)。

有了这个 DLL 是否可以在 Windows 下运行 luasandbox? 如何安装/配置 PHP/MediaWiki/Scribunto 环境以使用此 DLL?

【问题讨论】:

  • @EgorSkriptunoff 我不这么认为。
  • @EgorSkriptunoff OP 要求在 MediaWiki 内部使用 LuaSandbox,这是它的构建和预期用途。它不是 Lua 替代品这一事实并不意味着它不能用于此目的。
  • @JosephSible-ReinstateMonica - 你是对的。
  • 任何提示如何在 WIndows 下安装/使用它?

标签: lua mediawiki sandbox


【解决方案1】:

是的,可以在带有 IIS 的 Windows 下使用 LuaSandbox,实际上这是一种特别方便的方式,您只需将必要的 Lua 二进制文件作为 PHP 扩展 安装到现有的 PHP 中解释器(你知道它正在工作,因为 MediaWiki 是用 PHP 实现的)。

我在this conversation on the MediaWiki page Extension Talk:Scribunto 中详细讨论了这个问题,但我也会在这里提供要点:

我终于让 Lua 在 Windows 10 的 IIS 下使用 PHP 8.0 运行。诀窍是,我完全放弃了 luaStandalone 二进制文件,而是从 PECL 下载了(不到 2 个月前刚刚发布的)PHP luaSandbox 扩展:

https://pecl.php.net/package/LuaSandbox

单击“DLL”,然后选择与您的 PHP 安装相匹配的构建(对我来说,它是 PHP 8.0、x64、非线程安全的 - 详细信息位于 php.exe -i 的长长输出的最顶部从命令行),并下载提供的 zip 文件。解压后,只有两个文件是重要的:

  • php_luasandbox.dll,一个 PHP 扩展模块,可用于您的其他扩展的任何地方。 (对我来说,C:\Program Files\PHP\v8.0\ext\。)
  • lua5.1.dll,一个可嵌入的 Lua 解释器,安装在 php.exe 二进制文件所在的目录中。 (对我来说是C:\Program Files\PHP\v8.0\,扩展位置的父目录)。

之后,只需编辑您的 php.ini 即可添加:

extension=php_luasandbox.dll

并编辑 LocalSettings.php 以包括:

$wgScribuntoDefaultEngine = 'luasandbox';

(确保删除或注释掉任何关于 luaStandalone 的行)。

重新启动 IIS,应该就是这样。如果您有 MediaWiki 工作,那么您已经运行了 PHP,所以使用 Lua 那种方式,作为 PHP 扩展,非常有意义。

正如我在 MediaWiki 讨论中指出的那样, 对此存在一定程度的争议,因为 Lua 开发人员自己对“沙盒 Lua”的概念有点失望。 They do not believe 它是限制 Lua 访问和消耗系统资源的一种技术上可行的方法。但在 Windows 上,他们建议对 standalone 二进制文件施加的大多数限制无论如何都不适用于操作系统,这使得情况更加混乱/不清楚。

【讨论】:

  • 谢谢!!我需要的关键信息是检查要使用哪个 lua dll (php.exe -i)。它现在可以工作了(而且它快得多 :-)
猜你喜欢
  • 2018-04-16
  • 1970-01-01
  • 2016-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-20
  • 1970-01-01
  • 2018-09-04
相关资源
最近更新 更多