Other languages: Show
Ekstensi ini tersedia di MediaWiki 1.34 dan selanjutnya. Jadi Anda tidak perlu mengunduhnya lagi. Akan tetapi, Anda masih perlu mengikuti instruksi lain yang diberikan. This extension runs on top of an executable. You must have permission to run executables on your host in order for this extension to work. Manual ekstensi MediaWiki
The Scribunto (Latin: "they shall write/let them write (in the future)") extension allows for embedding scripting languages in MediaWiki. Currently the only supported scripting language is Lua. Scribunto Lua scripts go in a namespace called Module. LisensiThis extension contains code licensed GNU General Public License v2.0 or later (GPL-2.0+) as well as code licensed MIT License (MIT). KeperluanPCRE version compatibilityDirekomendasikan memakai PCRE 8.33+. You can see the version of PCRE used by PHP by viewing a phpinfo() web page, or from the command line with the following command: php -r 'echo "pcre: " . ( extension_loaded( "pcre" ) ? PCRE_VERSION : "no" ) . "\n";'
CentOS 6 and RHEL 6 are stuck on PCRE 7 and need to be upgraded. Updating to 8.33 on a server with an older version may be relatively complicated. See Updating to PCRE 8.33 or Higher for details. PHP pcntl (LTS)
Scribunto versions for MediaWiki 1.25 to 1.28 required PHP's pcntl extension, which is only available on Unix/Linux platforms, if you want to use "LuaStandalone" (i.e. running in a separate child process). This requirement was removed in Scribunto for MediaWiki 1.29. You can check whether pcntl support is enabled by viewing a phpinfo() web page, or from the command line with the following command: php -r 'echo "pcntl: " . ( extension_loaded( "pcntl" ) ? "yes" : "no" ) . "\n";'
PHP mbstring extensionPHP needs to have the mbstring extension enabled. You can check whether mbstring support is enabled by viewing a phpinfo() web page, or from the command line with the following command: php -r 'echo "mbstring: " . ( extension_loaded( "mbstring" ) ? "yes" : "no" ) . "\n";'
Lua binaryBundled binariesScribunto comes bundled with Lua binary distributions for Linux (x86 and x86-64), Mac OS X Lion, and Windows (32- and 64-bit). Scribunto should work for you out of the box if:
chmod 755 /path/to/extensions/Scribunto/includes/engines/LuaStandalone/binaries/lua5_1_5_linux_64_generic/lua
If you are using SELinux in "Enforcing" mode on your server, you might need to set a proper context for the binaries. Example for RHEL/CentOS 7:chcon -t httpd_sys_script_exec_t /path/to/extensions/Scribunto/includes/engines/LuaStandalone/binaries/lua5_1_5_linux_64_generic/lua Additional binariesAdditional Lua binary distributions, which may be needed for your web server if its operating system is not in the list above, can be obtained from http://luabinaries.sourceforge.net/ or from your Linux distribution. Only binary files for Lua 5.1.x are supported. Once you've installed the appropriate binary file on your web server, configure the location of the file with: # Where Lua is the name of the binary file # e.g. SourceForge LuaBinaries 5.1.5 - Release 2 name the binary file lua5.1 $wgScribuntoEngineConf['luastandalone']['luaPath'] = '/path/to/binaries/lua5.1'; Note that you should not add the above line unless you've confirmed that Scribunto's built-in binaries don't work for you. LuaJIT, although theoretically compatible, is not supported. The support was removed due to Spectre and bitrot concerns (phab:T184156). Pemasangan
chmod a+x /path/to/extensions/Scribunto/includes/engines/LuaStandalone/binaries/yourOS/lua
chcon -t httpd_sys_script_exec_t /path/to/extensions/Scribunto/includes/engines/LuaStandalone/binaries/yourOS/lua
Bagi pengguna yang menjalankan MediaWiki 1.29 atau lebih lama: Instruksi di atas menjelaskan cara baru untuk memasang ekstensi ini menggunakan require_once "$IP/extensions/Scribunto/Scribunto.php";
Optional installationIntegrating extensionsFor a more pleasant user interface, with syntax highlighting and a code editor with autoindent, install the following extensions:
Then in your $wgScribuntoUseGeSHi = true; $wgScribuntoUseCodeEditor = true; LuaSandboxWe have developed a PHP extension written in C called LuaSandbox. It can be used as an alternative to the standalone binary, and will provide improved performance. See LuaSandbox for details and installation instructions. If you initially installed the extension to use the Lua standalone binary, be sure to update $wgScribuntoDefaultEngine = 'luasandbox'; ConfigurationThe following configuration variables are available: $wgScribuntoDefaultEngineMemilih mesin pemograman. Valid values are the keys in$wgScribuntoEngineConf , which by default are 'luasandbox' or 'luastandalone' .$wgScribuntoUseGeSHiWhen
Perpanjangan:SyntaxHighlight is installed, set this true to use it when displaying Module pages. (MediaWiki 1.30 or earlier.)$wgScribuntoUseCodeEditorWhen
Perpanjangan:CodeEditor is installed, set this true to use it when editing Module pages. (MediaWiki 1.30 or earlier.)$wgScribuntoEngineConfAn associative array for engine configuration. Keys are the valid values for $wgScribuntoDefaultEngine , and values are associative arrays of
configuration data. Each configuration array must contain a 'class' key naming the ScribuntoEngineBase subclass to use.LuaStandaloneThe following keys are used in $wgScribuntoEngineConf['luastandalone']['key'] = 'value';luaPathSpecify the path to a Lua interpreter.errorFileSpecify the path to a file, writable by the web server user, where the error and debugging output from the standalone interpreter will be logged.Error output produced by the standalone interpreter are not logged by default. Configure logging with: $wgScribuntoEngineConf['luastandalone']['errorFile'] = '/path/to/file.log';memoryLimit Specify the memory limit in bytes for the standalone interpreter on Linux (enforced using ulimit).cpuLimitSpecify the CPU time limit in seconds for the standalone interpreter on Linux (enforced using ulimit).allowEnvFuncsSet true to allow use of setfenv and getfenv in modules. LuaSandboxThe following keys are used in $wgScribuntoEngineConf['luasandbox']['key'] = 'value';memoryLimitSpecify the memory limit in bytes.cpuLimitSpecify the CPU time limit in seconds.profilerPeriodSpecify the time between polls in sections for the Lua profiler.allowEnvFuncsSet true to allow use of setfenv and getfenv in modules. UsageScripts go in a new namespace called Module. Each module has a collection of functions, which can be called using wikitext syntax such as: {{#invoke: Module_name | function_name | arg1 | arg2 | arg3 ... }} LuaMempelajari LuaLua is a simple programming language intended to be accessible to beginners. For a quick crash-course on Lua, try Learn Lua in 15 Minutes. The best comprehensive introduction to Lua is the book Programming in Lua. The first edition (for Lua 5.0) is available online and is mostly relevant to Lua 5.1, the version used by Scribunto:
The reference manual is also useful:
Lua environmentIn Lua, the set of all global variables and functions is called an environment. Each Debug consoleDebug console usage exampleLihat pula: Extension:Scribunto/Debug consoleWhen editing a Lua module a so-called "debug console" can be found underneath the edit form. In this debug console Lua code can be executed without having to save or even create the Lua module in question. TroubleshootingTroubleshooting using the clickable "Script error" link.Note that red Script error messages are clickable and will provide more detailed information. Lua error: Internal error: The interpreter exited with status 1.When using the LuaStandalone engine (this is the default), errors along the lines of "Lua error: Internal error: The interpreter exited with status 1." may be generated if the standalone Lua interpreter cannot be executed or runs into various runtime errors. To obtain more information, assign a file path to If you're setting up Scribunto and are using IIS/Windows, this appears to be solved by commenting out a particular line. Lua error: Internal error: The interpreter exited with status 2.When using the LuaStandalone engine (this is the default), status 2 suggests memory allocation errors, probably caused by
settings that allocate inadequate memory space for PHP or Lua, or both. Assigning a file path to Increase PHP allocation in your PHP configuration; add the line $wgScribuntoEngineConf['luastandalone']['memoryLimit'] = 209715200; # bytes Finally, depending on the server configuration, some installations may be helped by adding another $wgMaxShellMemory = 204800; # dalam KB Note that all 3 memory limits are given in different units. Lua error: Internal error: 2. on ARM architectureIf
you're using an ARM architecture processor like on a RaspberryPi you'll face the error Check your Lua interpreter in: /path/to/webdir/Scribunto/includes/engines/LuaStandalone/binaries/lua5_1_5_linux_32_generic Check the interpreter by using: file lua The result should look like : 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 The installed default Lua interpreter shows: 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, look at the "Intel 80386" part what definitely is not correct. Check in $wgScribuntoEngineConf['luastandalone']['luaPath'] = '/usr/bin/lua5.1' At present don't set Lua error: Internal error: The interpreter exited with status 24.When using the LuaStandalone engine (this is the default), status 24 suggests CPU time limit errors, although those should be generating a "The time allocated for running scripts has expired" message instead. It would be useful to file a task in Phabricator and participate in determining why the XCPU signal isn't being caught. Lua error: Internal error: The interpreter exited with status 126.When using the LuaStandalone engine (this is the default), errors along the lines of "Lua error: Internal error: The interpreter exited with status 126." may be generated if the standalone Lua interpreter cannot be executed. This generally arises from either of two causes:
Set permissions as described under #Installation.
This often occurs with shared hosted servers. Remedies include adjusting Error condition such as: Fatal exception of type MWExceptionCheck the MediaWiki, PHP, or webserver logs for more details on the exception, or temporarily set $wgShowExceptionDetails to version 'GLIBC_2.11' not foundIf the above gives you errors such as "version 'GLIBC_2.11' not found", it means the version of the standard C library on your system is too old for the binaries provided with Scribunto. You should upgrade your C library, or use a version of Lua 5.1 compiled for the C library you do have installed. To upgrade your C library, your best option is usually to follow your distribution's instructions for upgrading packages (or for upgrading to a new release of the distribution, if applicable). If you copy the lua binaries from Scribunto master (or from gerrit:77905), that should suffice, if you can't or don't want to upgrade your C library. The distributed binaries were recently recompiled against an older version of glibc, so the minimum is now 2.3 rather than 2.11. Lua errors in Scribunto filesErrors here include:
If you are getting errors such these when attempting to use modules imported from WMF wikis, most likely your version of Scribunto is out of date. Upgrade if possible; for advanced users, you might also try to identify the needed newer commits and cherry-pick them into your local installation. preg_replace_callback(): Compilation failed: unknown property name after \P or \p at offset 7
Lua errorIf you copy templates from Wikipedia and then get big red "Lua error: x" messages where the Scribunto invocation (e.g. the template that uses When importing pages from another wiki, it is also possible for templates or modules in the imported data to overwrite existing templates or modules with the same title, which may break existing pages, templates, and modules that depend on the overwritten versions. Blank screenMake sure your extension version is applicable to your MediaWiki version. Design documents
Laman lainnya
Lihat pulaGeneral
Catatan
|