Toto rozšíření je součástí MediaWiki 1.34 a vyšší. To znamená, že jej nemusíte stahovat samostatně. Musíte se nicméně stále řídit pokyny k jeho použití.
Toto rozšíření běží nad spustitelným souborem. Aby toto rozšíření fungovalo, musíte mít oprávnění ke spouštění spustitelných souborů na vašem hostiteli.
V současnosti je jediným podporovaným skriptovacím jazykem Lua.
Skripty Scribunto Lua se nacházejí ve jmenném prostoru zvaném Modul.
Moduly jsou spouštěny na normálních wiki stránkách pomocí #invokefunkce parseru a každý modul má kolekci funkcí, kterou lze volat pomocí syntaxe wikitextu, jako například:
Stáhněte soubor/y a vložte je do adresáře pojmenovaného Scribunto ve vaší složce extensions/. Vývojáři a přispěvatelé kódu by si místo toho měli nainstalovat rozšíření from Git pomocí:cd extensions/ git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Scribunto
Dokončeno – Přejděte na stránku Special:Version vaší wiki a zkontrolujte, zda bylo rozšíření úspěšně nainstalováno.
Instalace Vagrant:
Pokud používáte Vagrant, instalujte s těmito parametry vagrant roles enable scribunto --provision
Požadavky
Kompatibilita PCRE verze
Doporučuje se PCRE 8.33+.
PCRE 8.33 byla vydána v květnu 2013.
Verzi PCRE používanou PHP můžete vidět na phpinfo() webové stránce nebo z příkazového řádku pomocí následujícího příkazu:
Pokud na svém serveru používáte SELinux v režimu "Enforcing", možná budete muset nastavit správný kontext pro binární soubory. Příklad pro RHEL/CentOS 7:
P.S. Zkontrolujte svou verzi rozšíření a zjistěte, zda je název složky engine velkými nebo malými písmeny.[2]
Další binární soubory
Další binární distribuce Lua, které mohou být potřeba pro váš webový server, pokud jeho operační systém není ve výše uvedeném seznamu, lze získat od http://luabinaries.sourceforge.net/ nebo z vaší distribuce Linuxu.
Podporovány jsou pouze binární soubory pro Lua 5.1.x.
Jakmile na svůj webový server nainstalujete příslušný binární soubor, nakonfigurujte umístění souboru pomocí:
# Kde Lua je název binárního souboru# např. SourceForge LuaBinaries 5.1.5 - Release 2 pojmenuje binární soubor lua5.1$wgScribuntoEngineConf['luastandalone']['luaPath']='/path/to/binaries/lua5.1';
Všimněte si, že byste neměli přidávat výše uvedený řádek, pokud jste nepotvrdili, že vestavěné binární soubory Scribunto pro vás nefungují.
LuaJIT, ačkoliv je teoreticky kompatibilní, není podporován.
Další možnosti konfigurace naleznete v dokumentaci ke každému rozšíření.
LuaSandbox
Vyvinuli jsme rozšíření PHP napsané v C s názvem LuaSandbox.
Lze jej použít jako alternativu k samostatnému binárnímu systému a poskytne lepší výkon.
Podrobnosti a pokyny k instalaci viz LuaSandbox.
Pokud jste původně nainstalovali rozšíření pro použití samostatného binárního souboru Lua, nezapomeňte aktualizovat LocalSettings.php s následujícím konfiguračním nastavením:
$wgScribuntoDefaultEngine='luasandbox';
Konfigurace
K dispozici jsou následující konfigurační proměnné:
$wgScribuntoDefaultEngine
Vyberte zdroj. Platné hodnoty jsou klíče v $wgScribuntoEngineConf, které jsou ve výchozím nastavení 'luasandbox' nebo 'luastandalone'.
$wgScribuntoEngineConf
Asociativní pole pro konfiguraci zdroje. Klíče jsou platné hodnoty pro $wgScribuntoDefaultEngine a hodnoty jsou asociativní pole konfiguračních dat. Každé konfigurační pole musí obsahovat klíč 'class' pojmenující podtřídu ScribuntoEngineBase, která se má použít.
LuaStandalone
Následující klíče se používají v $wgScribuntoEngineConf na Scribunto_LuaStandaloneEngine.
Obecně byste je nastavili jako něco podobného
Zadejte limit paměti v bajtech. Default 52428800 (50MB)
cpuLimit
Zadejte časový limit CPU v sekundách.
profilerPeriod
Určete dobu mezi průzkumy v sekcích pro Lua profiler.
allowEnvFuncs
Nastavením true umožníte použití setfenv a getfenv v modulech.
Použití
Skripty se ukládají do nového jmenného prostoru nazvaného Module.
Každý modul má sbírku funkcí, které lze volat pomocí syntaxe wikitextu, jako například:
Lua je jednoduchý programovací jazyk určený pro začátečníky.
Pro rychlokurz Lua vyzkoušejte Naučte se Lua za 15 minut.
Nejlepší komplexní úvod do Lua je kniha Programování v Lua.
První vydání (pro Lua 5.0) je k dispozici online a je většinou relevantní pro Lua 5.1, verzi používanou Scribunto:
Programování v Lua (přejděte dolů za reklamy na knihy a vyhledejte text)
V Lua se množina všech globálních proměnných a funkcí nazývá prostředí.
Každé volání na úrovni {{#invoke:}} probíhá v samostatném prostředí.
Proměnné definované v jednom {{#invoke:}} nebudou dostupné v jiném.
Toto omezení bylo nezbytné pro zachování flexibility v implementaci analyzátoru wikitextu.
Při editaci Lua modulu lze pod editačním formulářem nalézt tzv. "ladicí konzoli".
V této konzoli pro ladění lze kód Lua spustit, aniž byste museli ukládat nebo dokonce vytvářet příslušný modul Lua.
Řešení problémů
Odstraňování problémů pomocí odkazu "Script error" (chyba skriptu), na který lze kliknout.
Upozorňujeme, že na červené zprávy Chyba skriptu lze kliknout a poskytnou podrobnější informace.
Nelze spustit extensions/Scribunto/includes/Engines/LuaStandalone/binaries
Nastavte oprávnění ke spuštění pro binární soubory Lua dodávané s tímto rozšířením:[2]
Chyba Lua: Interní chyba: Interpret byl ukončen s výsledkem 1.
Při použití zdroje LuaStandalone (toto je výchozí nastavení) mohou být generovány chyby ve tvaru "Chyba Lua: Interní chyba: Interpret byl ukončen s výsledkem 1.", pokud samostatný interpret Lua nelze spustit nebo narazí na různé runtime chyby.
Chcete-li získat další informace, přiřaďte cestu k souboru $wgScribuntoEngineConf['luastandalone']['errorFile'].
Chybový výstup interpretu bude zaprotokolován do zadaného souboru, což by mělo být užitečnější při sledování problému.
Informace v protokolu ladění obsahují informace o ladění, proto je jich tolik.
Měli byste být schopni ignorovat jakýkoli řádek začínající "TX" nebo "RX".
Pokud nastavujete Scriunto a používáte IIS/Windows, zdá se, že je to vyřešeno zakomentováním řádku 132 v $wiki/extensions/Scribunto/includes/engines/LuaStandalone/LuaStandaloneInterpreter.php.
Jinými slovy, změňte $cmd = '"' . $cmd . '"'; na // $cmd = '"' . $cmd . '"';.
Chyba Lua: Interní chyba: Interpret byl ukončen s výsledkem 2.
Při použití zdroje LuaStandalone (toto je výchozí nastavení) stav 2 naznačuje chyby při alokaci paměti, pravděpodobně způsobené nastavením, které alokuje nedostatečný paměťový prostor pro PHP nebo Lua nebo obojí.
Přiřazení cesty k souboru $wgScribuntoEngineConf['luastandalone']['errorFile'] a prozkoumání tohoto výstupu může být cenné při diagnostice chyb při alokaci paměti.
Zvyšte alokaci PHP ve vaší konfiguraci PHP. Přidejte řádek memory_limit = 200M.
Tato alokace 200 MB je často dostatečná (od MediaWiki 1.24), ale může být podle potřeby zvýšena.
Nastavte alokaci paměti Scribunto v LocalSettings.php jako řádek:
Nakonec, v závislosti na konfiguraci serveru, může některým instalacím pomoci přidání dalšího řádku LocalSettings.php
$wgMaxShellMemory=204800;# v kB
Všimněte si, že všechny 3 limity paměti jsou uvedeny v různých jednotkách.
Chyba Lua: Vnitřní chyba: 2. na architektuře ARM
Pokud používáte procesor s architekturou ARM jako na RaspberryPi, budete čelit chybě Chyba Lua: Interní chyba: Překladač skončil se stavem 2. kvůli nesprávně dodanému binárnímu formátu překladače Lua.
lua: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0
Nainstalovaný výchozí interpret Lua zobrazuje:
lua: ELF 32-bit LSB pie executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.9,
podívejte se na část "Intel 80386", která rozhodně není správná.
Zkontrolujte v /usr/bin, jakou verzi Lua máte nainstalovanou ve vašem systému. Pokud máte nainstalovaný lua5.1, můžete buď zkopírovat interpret do svého adresáře lua5_1_5_linux_32_generic, nebo nastavit ve svém LocalSettings.php:
V současné době nenastavujte wgScribuntoEngineConf až /usr/bin/lua5.3, povede to k "interní chybě 1".
Chyba Lua: Interní chyba: Interpret byl ukončen s výsledkem 24.
Při použití zdroje LuaStandalone (toto je výchozí nastavení) stav 24 naznačuje chyby časového limitu CPU, ačkoli ty by měly místo toho generovat zprávu "The time allocated for running scripts has expired" (čas přidělený pro spouštění skriptů vypršel).
Bylo by užitečné zadat úkol v Phabricator a podílet se na určování, proč signál XCPU není zachycen.
Chyba Lua: Interní chyba: Interpret byl ukončen s výsledkem 126.
Při použití zdroje LuaStandalone (toto je výchozí nastavení) mohou být generovány chyby ve tvaru "Chyba Lua: Interní chyba: Interpret byl ukončen s výsledkem 126.", pokud nelze spustit samostatný interpret Lua.
To obvykle vzniká z jedné ze dvou příčin:
Oprávnění spustitelného souboru Lua nezahrnují Execute (spustit). Nastavte oprávnění, jak je popsáno v #Instalaci.
Server neumožňuje spouštění souborů z místa, kde je spustitelný soubor nainstalován, např. souborový systém je připojen s příznakem 'noexec'. K tomu často dochází u sdílených hostovaných serverů. Nápravy zahrnují úpravu $wgScribuntoEngineConf['luastandalone']['luaPath'] tak, aby ukazoval na binární soubor Lua 5.1 nainstalovaný ve spustitelném umístění, nebo úpravu či přesvědčování sdíleného hostitele, aby upravil nastavení bránící spuštění.
On an ARM-based processor, you might have to install Lua 5.1 for ARM (on Debian/Ubuntu, run sudo apt install lua5.1) and add to the LocalSettings.php file $wgScribuntoEngineConf['luastandalone']['luaPath'] = '/usr/bin/lua5.1';
Chybový stav jako: Závažná výjimka typu MWException
Další podrobnosti o výjimce naleznete v protokolech MediaWiki, PHP nebo webového serveru nebo dočasně nastavte $wgShowExceptionDetails na true.
verze 'GLIBC_2.11' nenalezena
Pokud vám výše uvedené zobrazí chyby jako "version 'GLIBC_2.11' not found" (verze 'GLIBC_2.11' nenalezena), znamená to, že verze standardní knihovny C ve vašem systému je příliš stará pro binární soubory dodávané se Scribuntem.
Měli byste aktualizovat svou knihovnu C nebo použít verzi Lua 5.1 zkompilovanou pro knihovnu C, kterou máte nainstalovanou.
Chcete-li aktualizovat svou knihovnu C, nejlepší možností je obvykle postupovat podle pokynů vaší distribuce pro aktualizaci balíčků (nebo pro přechod na nové vydání distribuce, pokud je to možné).
Pokud zkopírujete binárky lua z masteru Scribunto (nebo z gerrit:77905), mělo by to stačit, pokud nemůžete nebo nechcete aktualizovat svou knihovnu C.
Distribuované binární soubory byly nedávno překompilovány proti starší verzi glibc, takže minimum je nyní 2.3 namísto 2.11.
Chyby Lua v souborech Scribunto
Chyby zde zahrnují:
pokus o indexování pole 'text' (nulová hodnota)
Chyba Lua v mw.html.lua na řádku 253: Zadaná neplatná třída:
Pokud se vám při pokusu o použití modulů importovaných z WMF wiki zobrazují chyby, jako jsou tyto, je pravděpodobně vaše verze Scribunto zastaralá.
Aktualizujte, pokud je to možné. Pro pokročilé uživatele se můžete také pokusit identifikovat potřebné novější vydání a vybrat je do místní instalace.
preg_replace_callback(): Kompilace se nezdařila: Neznámý název vlastnosti za \P nebo \p na offsetu 7
preg_replace_callback(): Kompilace se nezdařila: Neznámý název vlastnosti po \P nebo \p na offsetu 7
to obvykle označuje nekompatibilní verzi PCRE. Budete muset aktualizovat na >= 8.10
@todo: odkaz na pokyny k upgradu
Chyba Lua
Pokud zkopírujete šablony z Wikipedie a poté se zobrazí velká červená zpráva "Lua error: x" tam, kde by mělo být vyvolání Scribunto (např. šablona, která používá {{#invoke:}}), pravděpodobně to znamená, že jste neimportovali vše, co jste potřebovali.
Ujistěte se, že jste při exportu zaškrtli políčko "Include templates" (zahrnout šablony) na w:Special:Export.
Při importu stránek z jiné wiki je také možné, že šablony nebo moduly v importovaných datech přepíší existující šablony nebo moduly se stejným názvem, což může poškodit stávající stránky, šablony a moduly, které závisí na přepsaných verzích.
Prázdná obrazovka
Ujistěte se, že je vaše verze rozšíření použitelná pro vaši verzi MediaWiki.
Licence
Toto rozšíření obsahuje kód licencovaný GNU General Public License v2.0 nebo novější (GPL-2.0+) a také kód licencovaný MIT License (MIT).
Lua scripting - Stránka aktivity Wikimedia popisující plán nasazení na stránky Wikimedia.
Extension:Scribunto/Lua reference manual - Odkaz na jazyk Lua, stejně jako jeho standardní knihovny a běžné moduly Scribunto podporované na stránkách Wikimedia.
Commons:Lua – mohou existovat specifické poznámky k používání modulů Lua na Wikimedia Commons, včetně nainstalovaných dalších rozšíření Lua (např. pro místní podporu internacionalizace a pro analýzu nebo přehrávání médií). Některé moduly pro všeobecné použití mohou být znovu použity v jiných wiki v různých jazycích (kromě specifických ladění pro zásady, jmenné prostory nebo stránky projektu/údržby s vyhrazenými názvy). Pokud je to možné, moduly, které by mohly být široce znovu použity na wikinách, by měly být testovány a internacionalizovány na Wikimedia Commons.
w:Help:Lua – mohou existovat konkrétní poznámky k používání modulů Lua na Wikipedii, včetně nainstalovaných dalších rozšíření Lua (včetně integrace obsahu Wikidata a Wikimedia Commons, generování složitých informačních polí a navigačních polí nebo pro usnadnění obecné správy /údržba obsahu wiki podle platných zásad). Některé další lokalizované edice Wikipedie (nebo jiné projekty, jako je Wikislovník, Wikisource nebo Wikinews) mohou mít také své vlastní potřeby a moduly Lua.
d:Help:Lua – mohou existovat konkrétní poznámky k používání modulů Lua na Wikidatech, včetně nainstalovaných dalších rozšíření Lua (např. pro místní podporu internacionalizace a pro databázové dotazy)
Rozšíření
Capiunto - poskytuje základní infobox funkce pro rozšíření Scribunto.
↑
tj. Scribunto nebude fungovat, pokud je proc_open uveden v poli disable_functions v souboru "php.ini" vašeho serveru. Pokud ano, může se zobrazit chybová zpráva jako proc_open(): open_basedir restriction in effect. File(/dev/null) is not within the allowed path(s): Pokud používáte Plesk a byla vám udělena dostatečná oprávnění, možná budete moci nastavit open_basedir v nastavení PHP pro vaši doménu nebo subdoménu. Zkuste změnit {WEBSPACEROOT}{/}{:}{TMP}{/} na {WEBSPACEROOT}{/}{:}{TMP}{/}{:}/dev/null{:}/bin/bash.
Toto rozšíření se používá na jednom nebo více projektech Wikimedia. Pravděpodobně to znamená, že rozšíření je stabilní a funguje dostatečně dobře, aby jej mohly používat weby s tak vysokou návštěvností. Vyhledejte tento název rozšíření v konfiguračních souborech CommonSettings.php a InitialiseSettings.php Wikimedie, abyste viděli, kde je nainstalováno. Úplný seznam rozšíření nainstalovaných na konkrétní wiki lze vidět na stránce wiki Special:Version.
Toto rozšíření je zahrnuto v následujících wiki farmách/hostitelích a/nebo balíčcích:
Toto není autoritativní seznam. Některé wiki farmy/hostitelé a/nebo balíčky mohou toto rozšíření obsahovat, i když zde nejsou uvedeny. Pro potvrzení se vždy obraťte na své wiki farmy/hostitele nebo balíček.