Extension:Scribunto

This page is a translated version of the page Extension:Scribunto and the translation is 100% complete.
Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎Türkçe • ‎dansk • ‎français • ‎magyar • ‎português • ‎português do Brasil • ‎русский • ‎中文 • ‎日本語
Bu uzantı MediaWiki 1.34 ve üstü ile gelir. Böylece tekrar indirmek zorunda değilsiniz. Ancak, verilen diğer talimatları izlemeniz gerekir.
MediaWiki manüel uzantıları
OOjs UI icon advanced.svg
Scribunto
Sürüm durumu: kararlı
Uygulama Ayrıştırıcı uzantısı
Açıklama Betik dillerini MediaWiki sayfalarına gömmek için bir çerçeve sağlar
Yazar(lar)
  • Victor Vasiliev
  • Tim Starling
ve diğerleri
En son sürüm Güncellemeler devam etmekte
Uyumluluk politikası sürüm dalları
PHP 5.5+
Lisans GPL-2.0-or-later AND MIT
İndir
Module
  • $wgScribuntoDefaultEngine
  • $wgScribuntoSlowFunctionThreshold
  • $wgScribuntoGatherFunctionStats
  • $wgScribuntoUseGeSHi
  • $wgScribuntoUseCodeEditor
  • $wgScribuntoEngineConf
Translatewiki.net adresinde mevcutsa, Scribunto uzantısını çevirin
Kullanım ve sürüm matrisini kontrol edin.
Sorunlar Açık görevler · Hata bildir

Scribunto (Latince: "yazacakları izin verecekler (gelecekte)") uzantısı, MediaWiki'de betik dilleri yerleştirmesine izin verir.

Şu anda desteklenen tek betik dili Lua'dır.

Lisans

Bu uzantı, kod lisanslı GNU Genel Kamu Lisansı v2.0 veya daha yenisini (GPL-2.0+) ve kod lisanslı MIT Lisansını (MIT) içerir.

Gereksinimler

PCRE sürüm uyumluluğu

PCRE 8.33+ önerilir. PHP tarafından kullanılan PCRE sürümünü bir phpinfo() web sayfasını görüntüleyerek veya komut satırından aşağıdaki komutla görebilirsiniz:

php -r 'echo "pcre: " . ( extension_loaded( "pcre" ) ? PCRE_VERSION : "no" ) . "\n";'

CentOS 6 ve RHEL 6 PCRE 7'ye yapışmış durumda ve yükseltilmeleri gerekiyor.

Daha eski bir sürüme sahip bir sunucuda 8.33'e güncellemek nispeten karmaşık olabilir. Ayrıntılar için Updating to PCRE 8.33 or Higher sayfasına bakın.

PHP pcntl (LTS)

MediaWiki sürümü:
1.25 – 1.28

MediaWiki 1.25 - 1.28 için Scribunto sürümleri, "LuaStandalone" kullanmak istiyorsanız (yani ayrı bir alt süreçte çalışıyorsa) yalnızca Unix/Linux platformlarında bulunan PHP'nin [https://php.net/pcntl.installation

pcntl uzantısını] gerektirir.

Bu gereksinim MediaWiki 1.29 için Scribunto'da kaldırılmıştır.

Bir phpinfo() web sayfasını görüntüleyerek veya aşağıdaki komutla komut satırından pcntl desteğinin etkin olup olmadığını kontrol edebilirsiniz:

php -r 'echo "pcntl: " . ( extension_loaded( "pcntl" ) ? "yes" : "no" ) . "\n";'

PHP mbstring extension

PHP 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 binary

Bundled binaries

Scribunto 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:

  1. Your web server is run on one of the above platforms.
  2. PHP's proc_open function is not restricted[1]
  3. Your web server is configured to allow the execution of binary files in the MediaWiki tree.
  Not: Execute permissions may need to be set; for example, in Linux use
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 binaries

Additional 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.

Kurulum

  • Vagrant kullanıyorsanız, vagrant roles enable scribunto --provision ile yükleyin
Manüel kurulum
  • İndir ve dosyaları extensions/ klasörünüzdeki Scribunto adlı bir dizine yerleştirin.
  • LocalSettings.php dosyanızın altına aşağıdaki kodu ekleyin:
    wfLoadExtension( 'Scribunto' );
    $wgScribuntoDefaultEngine = 'luastandalone';
    
  • Set execute permissions for the Lua binaries bundled with this extension:
chmod a+x /path/to/extensions/Scribunto/includes/engines/LuaStandalone/binaries/yourOS/lua
  • Set type to httpd_sys_script_exec_t if SELinux is enforced:
chcon -t httpd_sys_script_exec_t /path/to/extensions/Scribunto/includes/engines/LuaStandalone/binaries/yourOS/lua
  •   Yapıldı – Uzantının başarıyla yüklendiğini doğrulamak için vikinizde Special:Version seçeneğine gidin.

MediaWiki 1.29 veya önceki bir sürümü çalıştıran kullanıcılara:

Yukarıdaki talimatlar, bu eklentiyi wfLoadExtension() kullanarak kurmanın yeni yolunu açıklar. Bu uzantıyı önceki sürümlerine (MediaWiki 1.29 ve önceki sürümler) yüklemeniz gerekirse, wfLoadExtension( 'Scribunto' ); yerine kullanmanız gerekir:

require_once "$IP/extensions/Scribunto/Scribunto.php";

Optional Installation

Integrating extensions

For a more pleasant user interface, with syntax highlighting and a code editor with autoindent, install the following extensions:

(MediaWiki 1.30 or earlier)Then in your LocalSettings.php after all the extension registrations, add:

$wgScribuntoUseGeSHi = true;
$wgScribuntoUseCodeEditor = true;

LuaSandbox

C ile yazılmış LuaSandbox adında bir PHP uzantısı geliştirdik. Bağımsız ikililere alternatif olarak kullanılabilir ve gelişmiş performans sağlayacaktır. Ayrıntılar ve kurulum talimatları için LuaSandbox sayfasına bakın.

Lua bağımsız ikili dosyasını kullanmak için uzantıyı ilk kez yüklediyseniz, LocalSettings.php $wgScribuntoDefaultEngine = 'luasandbox'; ile güncellediğinizden emin olun.

Yapılandırma

Aşağıdaki yapılandırma değişkenleri mevcuttur:

$wgScribuntoDefaultEngine
Motoru seçin. Geçerli değerler, varsayılan olarak 'luasandbox' veya 'luastandalone' olan $wgScribuntoEngineConf içindeki anahtarlardır.
$wgScribuntoUseGeSHi
Extension:SyntaxHighlight yüklendiğinde, Modül sayfalarını görüntülerken bunu kullanmak için bunu true olarak ayarlayın.
$wgScribuntoUseCodeEditor
Extension:CodeEditor yüklendiğinde, Modül sayfalarını düzenlerken kullanmak için bunu true olarak ayarlayın.
$wgScribuntoEngineConf
Motor yapılandırması için ilişkilendirilebilir bir dizi. Anahtarlar, $wgScribuntoDefaultEngine için geçerli değerlerdir ve değerler, yapılandırma verilerinin ilişkilendirilebilir dizileridir. Her yapılandırma dizisi, kullanılacak ScribuntoEngineBase alt sınıfını adlandıran bir 'class' anahtarı içermelidir.

LuaStandalone

Aşağıdaki anahtarlar $wgScribuntoEngineConf için Scribunto_LuaStandaloneEngine için kullanılır. Genellikle bunları böyle bir şey olarak

$wgScribuntoEngineConf['luastandalone']['key'] = 'value';
luaPath
Bir Lua yorumlayıcısının yolunu belirtin.
errorFile
Tek başına yorumlayıcıdan gelen hata ve hata ayıklama çıkışının günlüğe kaydedileceği web sunucusu kullanıcısı tarafından yazılabilir bir dosyanın yolunu belirtin.
Bağımsız yorumlayıcı tarafından üretilen hata çıkışı varsayılan olarak günlüğe kaydedilmez. Günlüğü aşağıdakilerle yapılandırın:
$wgScribuntoEngineConf['luastandalone']['errorFile'] = '/path/to/file.log';
memoryLimit
Linux'ta bağımsız yorumlayıcı için (ulimit kullanılarak zorlanmış) bayt cinsinden bellek sınırını belirtin.
cpuLimit
Linux'ta bağımsız yorumlayıcı için (ulimit kullanılarak zorlanır) CPU zaman sınırını saniye cinsinden belirtin.
allowEnvFuncs
Modüllerde setfenv ve getfenv kullanımına izin vermek için true olarak ayarlayın.

LuaSandbox

Aşağıdaki anahtarlar $wgScribuntoEngineConf için Scribunto_LuaSandboxEngine için kullanılır. Genellikle bunları böyle bir şey olarak

$wgScribuntoEngineConf['luasandbox']['anahtar'] = 'değer';
memoryLimit
Bellek sınırını bayt cinsinden belirtin.
cpuLimit
CPU zaman sınırını saniye cinsinden belirtin.
profilerPeriod
Lua profil oluşturucusu için bölümlerde anketler arasındaki süreyi belirtin.
allowEnvFuncs
Modüllerde setfenv ve getfenv kullanımına izin vermek için true olarak ayarlayın.

Kullanım

Betikler, Modül adlı yeni bir ad alanına gider. Her modül, vikimetin sözdizimi kullanılarak çağrılabilen bir dizi işlevine sahiptir:

 {{#invoke: Module_name | function_name | arg1 | arg2 | arg3 ... }}

Lua

Lua öğrenme

Lua yeni başlayanlar tarafından erişilebilir olması amaçlanan basit bir programlama dilidir. Lua hakkında hızlı bir kurs için 15 Dakikada Lua Öğren'i deneyin.

Lua'ya en kapsamlı giriş, 2'Lua'da Programlama kitabıdır. İlk baskı (Lua 5.0 için) çevrimiçi olarak mevcuttur ve çoğunlukla Scribunto tarafından kullanılan Lua 5.1 ile ilgilidir:

Kaynak el kitabı da yararlıdır:

Lua ortamı

Lua'da, tüm küresel değişkenlerin ve işlevlerin kümesine ortam denir.

Her {{#invoke:}} çağrı ayrı bir ortamda çalışır. Bir {{#invoke:}} içinde tanımlanan değişkenler diğerinden kullanılamaz. Bu kısıtlama, vikimetin ayrıştırıcısı uygulamasında esnekliği korumak için gerekliydi.

Betiklerin çalıştığı ortam, standart Lua ile aynı değildir. Bu farklılıklar Extension:Scribunto/Lua kaynak kılavuzu sayfasında belirtilmiştir.

Hata ayıklama konsolu

 
Konsol kullanım örneğinde hata ayıklama
Ayrıca bakınız: Extension:Scribunto/Debug console

Bir Lua modülünü düzenlerken düzenleme formunun altında "hata ayıklama konsolu" bulunur. Bu hata ayıklama konsolunda Lua kodu, söz konusu Lua modülünü kaydetmek veya hatta oluşturmak zorunda kalmadan yürütülebilir.

Sorun giderme

 
Tıklanabilir "Betik hatası" bağlantısını kullanarak sorun gidermesi.

Kırmızı Betik hatası iletilerin tıklanabilir olduğunu ve daha ayrıntılı bilgi sağlayacağını unutmayın.

Lua hatası: Dahili hata: Yorumlayıcı durum 1 ile çıkıldı.

LuaStandalone motorunu kullanırken (bu varsayılan değerdir), bağımsız Lua yorumlayıcısı çalıştırılamazsa veya çeşitli çalışma zamanı hatalarıyla karşılaşırsa, "Lua hatası: Dahili hata: Yorumlayıcı durum 1 ile çıkıldı." satırındaki hatalar üretilebilir. Daha fazla bilgi edinmek için $wgScribuntoEngineConf['luastandalone']['errorFile'] ile bir dosya yolu atayın. Tercümanın hata çıkışı, belirtilen dosyaya kaydedilir ve bu da sorunun izlenmesinde daha yararlı olur. Hata ayıklama günlüğündeki bilgiler hata ayıklama bilgilerini içerir, bu yüzden bu kadar çok şey vardır. "TX" veya "RX" ile başlayan satırları yoksayabilirsiniz.

Lua hatası: Dahili hata: Yorumlayıcı durum 2 ile çıkıldı.

LuaStandalone motorunu kullanırken (bu varsayılan değerdir), durum 2, muhtemelen PHP veya Lua veya her ikisi için yetersiz bellek alanı ayıran ayarlardan kaynaklanan bellek ayırma hataları önerir. $wgScribuntoEngineConf['luastandalone']['errorFile'] değerine bir dosya yolu atamak ve bu çıkışı incelemek bellek ayırma hatalarının teşhisinde değerli olabilir.

PHP yapılandırmanızda PHP ayırmayı artırın; memory_limit = 200M satırını ekleyin. 200MB'lık bu ayırma genellikle yeterlidir (MediaWiki 1.24'ten itibaren), ancak gerektiği gibi artırılabilir. Scribunto'nun LocalSettings.php'deki bellek ayırmasını satır olarak ayarlayın:

$wgScribuntoEngineConf['luastandalone']['memoryLimit'] = 209715200; # baytlar

Son olarak, sunucu yapılandırmasına bağlı olarak, başka bir LocalSettings.php satırı ekleyerek bazı kurulumlara yardımcı olabilirsiniz

$wgMaxShellMemory = 204800; # KB olarak

3 bellek sınırının da farklı birimlerde verildiğini unutmayın.

Lua hatası: Dahili hata: Yorumlayıcı durum 24 ile çıkıldı.

LuaStandalone motoru kullanılırken (bu varsayılan değerdir), durum 24 CPU zaman sınırı hataları önerir, ancak bunun yerine "Betikleri çalıştırmak için ayrılan süre doldu" mesajı oluşturmalıdır. Phabricator içine bir görev vermek ve XCPU sinyalinin neden yakalanmadığını belirlemeye katılmak yararlı olacaktır.

Lua hatası: Dahili hata: Yorumlayıcı durum 126 ile çıkıldı.

LuaStandalone motorunu kullanırken (bu varsayılan değerdir), bağımsız Lua yorumlayıcısı yürütülemezse, "Lua hatası: Dahili hata: Yorumlayıcı durum 126 ile çıkıldı." satırı boyunca hatalar üretilebilir. Bu genellikle iki nedenden birinden kaynaklanır:

  • Lua yürütülebilir dosyasının izinleri Yürüt öğesini içermez. İzinleri #Kurulum altında açıklandığı şekilde ayarlayın.
  • Sunucu, yürütülebilir dosyanın yüklü olduğu yerden dosyaların yürütülmesine izin vermez, örn. dosya sistemi 'noexec' işaretiyle bağlanır. Bu genellikle paylaşılan barındırılan sunucularda görülür. Çözümler arasında, $wgScribuntoEngineConf['luastandalone']['luaPath'] yürütülebilir bir konuma kurulmuş bir Lua 5.1 ikili dosyasını gösterecek şekilde ayarlamak veya paylaşılan ana bilgisayarı yürütmeyi önleyen ayarı ayarlamak için ayarlamak veya ikna etmek yer alır.

Aşağıdaki hata koşulu: MWException türünün önemli istisnası

İstisna hakkında daha fazla ayrıntı için MediaWiki, PHP veya web sunucusu günlüklerine bakın veya geçici olarak $wgShowExceptionDetails değerini true olarak ayarlayın.

`GLIBC_2.11' sürümü bulunamadı

Yukarıdaki "`GLIBC_2.11' sürümü bulunamadı" gibi hatalar veriyorsa, sisteminizdeki standart C kütüphanesinin sürümü Scribunto ile sağlanan ikili dosyalar için çok eski olduğu anlamına gelir. C kitaplığınızı yükseltmeniz veya yüklediğiniz C kitaplığı için derlenmiş Lua 5.1 sürümünü kullanmanız gerekir. C kitaplığınızı yükseltmek için en iyi seçeneğiniz genellikle dağıtımınızın paketleri yükseltme (veya varsa dağıtımın yeni bir sürümüne yükseltme) yönergelerini izlemektir.

Lua ikili dosyalarını Scribunto master'dan (veya gerrit:77905 üzerinden) kopyalarsanız, C kütüphanenizi yükseltmek istemiyorsanız bu yeterli olacaktır. Dağıtılmış ikili dosyalar son zamanlarda glibc'nin eski bir sürümüne karşı derlendi, bu nedenle minimum 2.11 yerine 2.3'tür.

Lua errors in Scribunto files

Errors here include:

  • attempt to index field 'text' (a nil value)
  • Lua error in mw.html.lua at line 253: Invalid class given:

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

preg_replace_callback(): Compilation failed: unknown property name after \P or \p at offset 7

  • this usually indicates an incompatible version of PCRE; you’ll need to update to >= 8.10
  • @todo: link to instructions on how to upgrade

Lua error

If you copy templates from Wikipedia and then get big red "Lua error: x" messages where the Scribunto invocation (e.g. the template that uses {{#invoke:}}) should be, that probably means that you didn't import everything you needed. Make sure that you tick the "Include templates" box at w:Special:Export when you export.

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 screen

Make sure your extension version is applicable to your MediaWiki version.

Design documents

Diğer sayfalar

Ayrıca bakınız

General
  • Lua Wikibase client - functionality for the Scribunto extension.
  • commons:Commons:Lua - there may be specific notes for using Lua modules on Wikimedia Commons, including additional Lua extensions installed (e.g. for local support of internationalization and for parsing or playing medias). Some general purpose modules may be reused in other wikis in various languages (except specific tunings for policies, namespaces or project/maintenance pages with dedicated names). If possible, modules that could be widely reused across wikis should be tested and internationalized on Commons.
  • wikipedia:Help:Lua - there may be specific notes for using Lua modules on (English) Wikipedia, including additional Lua extensions installed (including for integrating Wikidata and Wikimedia Commons contents, generating complex infoboxes and navigation boxes, or to facilitate the general administration/maintenance of the wiki contents under applicable policies). Some other localized Wikipedia editions (or other projects such Wiktionnary, Wikisource or Wikinews) may also have their own needs and Lua modules.
  • wikidata:Help:Lua - there may be specific notes for using Lua modules on Wikidata, including additional Lua extensions installed (e.g. for local support of internationalization and for database queries)
Extensions

Notlar

  1. i.e. proc_open is not within the array of disable_functions in your server's "php.ini" file.