Extension:Scribunto/tr

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.

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:


 * Scribunto, PCRE'nin 8.10'dan düşük sürümleriyle çalışmaz.
 * PCRE 8.31, HHVM ile kullanıldığında çeşitli paternleri kırma çalışmasını JIT örüntülü hatalara sahiptir.
 * PCRE 8.32, mw.html modülünde hatalara neden olacak belirli karakter olmayan kod noktalarının reddedilmesine neden olacak hata içerir.

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

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   function is not restricted
 * 3) Your web server is configured to allow the execution of binary files in the MediaWiki tree.
 * Execute permissions may need to be set; for example, in Linux use
 * 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:

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:

Note that you should not add the above line unless you've confirmed that Scribunto's built-in binaries don't work for you.

Integrating extensions
For a more pleasant user interface, with syntax highlighting and a code editor with autoindent, install the following extensions:
 * Extension:WikiEditor
 * Extension:SyntaxHighlight
 * Extension:CodeEditor

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

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 sayfasına bakın.

Lua bağımsız ikili dosyasını kullanmak için uzantıyı ilk kez yüklediyseniz, LocalSettings.php  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 : yüklendiğinde, Modül sayfalarını görüntülerken bunu kullanmak için bunu true olarak ayarlayın.
 * $wgScribuntoUseCodeEditor : 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


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


 * 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


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

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:


 * Lua'da programlama (metni bulmak için kitap reklamlarını aşağı kaydırın)

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 çağrı ayrı bir ortamda çalışır. Bir 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.

Hata ayıklama konsolu



 * Ayrıca bakınız: 

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


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

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, "" satırındaki hatalar üretilebilir. Daha fazla bilgi edinmek için  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.

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. 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;  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: Son olarak, sunucu yapılandırmasına bağlı olarak, başka bir LocalSettings.php satırı ekleyerek bazı kurulumlara yardımcı olabilirsiniz

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

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.

LuaStandalone motorunu kullanırken (bu varsayılan değerdir), bağımsız Lua yorumlayıcısı yürütülemezse, "" 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.
 * The server does not allow execution of files from the place where the executable is installed, e.g. the filesystem is mounted with the 'noexec' flag. This often occurs with shared hosted servers. Remedies include adjusting  to point to a Lua 5.1 binary installed in an executable location, or adjusting or convincing the shared host to adjust the setting preventing execution.

Error condition such as: Fatal exception of type MWException
Check the MediaWiki, PHP, or webserver logs for more details on the exception, or temporarily set to true.

version `GLIBC_2.11' not found
If 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 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 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

 * 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 ) 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

 * Linux.conf.au 2014 - Scribunto presentation.webm's presentation at linux.conf.au 2014 discussing the motivations, implementation challenges and results of deploying Scribunto and Lua.]]

Other pages

 * - Wikimedia activity page describing deployment plan to Wikimedia sites
 * - The reference about the Lua language, as well as its standard libraries and common Scribunto modules supported on Wikimedia sites
 * - A list of known changes in Lua 5.2 that may cause code written in 5.1 to function unexpectedly
 * - Code for example extensions extending the Scribunto library.
 * - A list of known changes in Lua 5.2 that may cause code written in 5.1 to function unexpectedly
 * - Code for example extensions extending the Scribunto library.
 * - Code for example extensions extending the Scribunto library.