WikiChree.COM
新規
編集
添付
管理
WikiChreeガイド
WikiChreeの公式ガイドです。
最新の20件
2026-09-19
プラグイン/linkvote
2026-09-05
DokuFarm
WikiChree.COM
プラグイン/touchgraph
プラグイン/tracker_list
プラグイン/template
プラグイン/version
プラグイン/yetlist
プラグイン/unfreeze
プラグイン/source
プラグイン/versionlist
プラグイン/update_entities
2026-09-04
[テーブル番号または設定]
プラグイン/vote
プラグイン/tracker
プラグイン/topicpath
プラグイン/size
プラグイン/showrss
プラグイン/server
プラグイン/setlinebreak
開始行:
* Pkript/設定 [#z9ac4e6a]
Pkript の設定項目、直接呼び出し、セキュリティの解説です。
#contents
** 設定定数 (plugin/pkript.inc.php) [#yff3000b]
plugin/pkript.inc.php 内の定数を編集して動作を調整できま...
*** スクリプトの置き場所 [#u3a5c118]
|~定数名|~既定値|~説明|
|PKRIPT_SCRIPT_DIR|'plugin/pkript/script/'|スクリプトの配...
|PKRIPT_SCRIPT_EXT|'pks,js'|受け付ける拡張子(カンマ区切...
|PKRIPT_ALLOW_PAGE_SCRIPT|1|:config/pkript/script/ ページ...
|PKRIPT_PAGE_SCRIPT_FROZEN_ONLY|0|ページ実行を凍結ページ...
|PKRIPT_PAGE_PREFIX|':config/pkript/script/'|ページスクリ...
|PKRIPT_ALLOW_DATA|1|data.* によるデータ保存を有効にするか|
|PKRIPT_DATA_PREFIX|':config/pkript/data/'|データを置くペ...
|PKRIPT_DATA_MIN_TRUST|PKRIPT_WRITE_MIN_TRUST|data.set() ...
|PKRIPT_BIND|1|#hello のように、スクリプト名で直接呼び出...
PKRIPT_BIND を 0 にすると #pkript(hello) と &pkript(hello...
*** 文法 [#uf807887]
|~定数名|~既定値|~説明|
|PKRIPT_JSX|1|JSX記法(<p>{name}</p>)を使えるようにするか|
|PKRIPT_REGEX|1|正規表現リテラル(/[a-z]+/i)を使えるよう...
|PKRIPT_REGEX_BACKTRACK|100000|1回の照合で許すバックトラ...
|PKRIPT_MAX_REGEX|512|パターンの最大バイト数|
PKRIPT_JSX を 0 にすると < は比較演算子としてだけ働きます...
PKRIPT_REGEX を 0 にすると / は除算としてだけ働きます。PK...
*** 1リクエストあたりの上限 [#nfa67e6d]
1ページに #pkript をいくつ書いても、wiki.convert の入れ子...
|~定数名|~既定値|~説明|
|PKRIPT_MAX_STEPS|1000000|評価ステップ数|
|PKRIPT_MAX_TIME|3|実行時間(秒)。Pkript の中で過ごした...
|PKRIPT_MAX_MEMORY|memory_limit の3/4|メモリ使用量|
|PKRIPT_MAX_CONVERT|32|wiki.convert の呼び出し回数|
|PKRIPT_MAX_READS|5000|ページの参照回数(wiki.exists / so...
|PKRIPT_MAX_WRITES|4|ページの書き込み回数|
*** 1回の実行・1つの値の上限 [#yddc2152]
|~定数名|~既定値|~説明|
|PKRIPT_MAX_DEPTH|64|関数の最大呼び出し深度|
|PKRIPT_MAX_LOOP|100000|1ループの最大繰り返し回数|
|PKRIPT_MAX_STRING|1048576|文字列の最大バイト数(1MB)|
|PKRIPT_MAX_ARRAY|10000|配列の最大要素数|
|PKRIPT_MAX_PAGES|1000|wiki.pages が返せる最大ページ数|
|PKRIPT_MAX_PAGE_BYTES|524288|書き込めるページの最大バイ...
|PKRIPT_MAX_IMPORTS|16|import できる最大スクリプト数|
|PKRIPT_MAX_IMPORT_DEPTH|4|import の最大深度|
*** 権限とキャッシュ [#m57a6d0e]
|~定数名|~既定値|~説明|
|PKRIPT_WRITE_MIN_TRUST|PKRIPT_TRUST_FILE|ページを書き込...
|PKRIPT_IMPORT_LOWER_TRUST|0|自分より信頼度の低いスクリプ...
|PKRIPT_SECRET_FILE|CACHE_DIR . 'pkript_secret.dat'|CSRF...
|PKRIPT_AST_CACHE|1|解析済みスクリプトを cache/ に保存す...
|PKRIPT_DEBUG|1|エラーに行番号と列番号を出すか、console.l...
|PKRIPT_MAX_LOG|100|console.log で残せる行数|
|PKRIPT_MAX_LOG_BYTES|8192|console.log 全体のバイト数|
これらは pukiwiki.ini.php で define すれば上書きできます。
** #aaa による直接呼び出し [#fbcc3589]
#pkript(hello) ではなく #hello と書いて直接呼び出せます。...
#hello(World)
&hello(World);
この動作は PKRIPT_BIND で切り替えます。0 にするとラッパー...
// pukiwiki.ini.php
define('PKRIPT_BIND', 0); // 既定は 1
lib/plugin.php を自分で改造している場合など、フォールバッ...
if (file_exists(PLUGIN_DIR . 'pkript.inc.php')) {
require_once(PLUGIN_DIR . 'pkript.inc.php');
if (function_exists('plugin_pkript_bind') && plugin_...
$exist[$name] = TRUE;
$count[$name] = 1;
return TRUE;
}
}
** セキュリティ [#je4eecaa]
*** 信頼度 [#w3340f80]
スクリプトをどこに置いたかで権限が決まります。
|~置き場所|~信頼度|~ページの書き込み|h
|ファイル(plugin/pkript/script/)|PKRIPT_TRUST_FILE|でき...
|凍結ページ(:config/pkript/script/)|PKRIPT_TRUST_FROZEN...
|編集可能ページ(:config/pkript/script/)|PKRIPT_TRUST_PA...
読み出し、表示、計算はどの信頼度でも同じように使えます。...
**** import と信頼度 [#r705c984]
import しても権限は増えません。
- 実行全体が、関わったスクリプトのうち''一番低い信頼度''...
- 自分より信頼度の低いスクリプトは読み込めません。編集可...
**** CSRFトークン [#u31b1f04]
wiki.write と wiki.append は wiki.token() のトークンを要...
認証を設定していないWikiでは紐付ける相手がいないため、ト...
*** HTMLサニタイザ [#i13629b8]
スクリプトが出力したHTMLは自動で検査され、危険なタグや属...
- script, iframe 等の危険なタグは無効化されます。
- onclick 等のイベント属性は除去されます。
- href, src の javascript: や data: スキームは除去されま...
- class や id には自動で pkript- 接頭辞が付与されます。
*** style属性で使えるCSS [#mc19c12c]
プロパティのホワイトリストと、値のパターン検査の二段構え...
|~分類|~通すもの|h
|色・文字|color, background-color, font-*, text-*, line-h...
|箱|margin*, padding*, border*, box-shadow, box-sizing, w...
|表|border-collapse, border-spacing, table-layout, captio...
|Flexbox|flex*, justify-*, align-*, order, gap, row-gap, ...
|Grid|grid-template-*, grid-auto-*, grid-area, grid-colum...
|動き|transition*, animation*, transform, transform-origi...
<div style="transform:rotate(3deg); transition:all 0.3s ...
''通さないもの''は、見た目ではなく''位置''に関わるもので...
- position と z-index は通しません(fixed / absolute でWi...
- ビューポート単位(vw / vh)は通しません(ウィンドウに対...
- url(...) を含む値は通しません。したがって background-im...
- expression(...)、javascript:、@import、\、/* を含む値は...
- 関数はホワイトリスト制です。rgb / rgba / hsl / hsla、tr...
値が規則に合わないプロパティは、そのプロパティだけ黙って...
animation-name が指すキーフレームは''スクリプトからは定義...
終了行:
* Pkript/設定 [#z9ac4e6a]
Pkript の設定項目、直接呼び出し、セキュリティの解説です。
#contents
** 設定定数 (plugin/pkript.inc.php) [#yff3000b]
plugin/pkript.inc.php 内の定数を編集して動作を調整できま...
*** スクリプトの置き場所 [#u3a5c118]
|~定数名|~既定値|~説明|
|PKRIPT_SCRIPT_DIR|'plugin/pkript/script/'|スクリプトの配...
|PKRIPT_SCRIPT_EXT|'pks,js'|受け付ける拡張子(カンマ区切...
|PKRIPT_ALLOW_PAGE_SCRIPT|1|:config/pkript/script/ ページ...
|PKRIPT_PAGE_SCRIPT_FROZEN_ONLY|0|ページ実行を凍結ページ...
|PKRIPT_PAGE_PREFIX|':config/pkript/script/'|ページスクリ...
|PKRIPT_ALLOW_DATA|1|data.* によるデータ保存を有効にするか|
|PKRIPT_DATA_PREFIX|':config/pkript/data/'|データを置くペ...
|PKRIPT_DATA_MIN_TRUST|PKRIPT_WRITE_MIN_TRUST|data.set() ...
|PKRIPT_BIND|1|#hello のように、スクリプト名で直接呼び出...
PKRIPT_BIND を 0 にすると #pkript(hello) と &pkript(hello...
*** 文法 [#uf807887]
|~定数名|~既定値|~説明|
|PKRIPT_JSX|1|JSX記法(<p>{name}</p>)を使えるようにするか|
|PKRIPT_REGEX|1|正規表現リテラル(/[a-z]+/i)を使えるよう...
|PKRIPT_REGEX_BACKTRACK|100000|1回の照合で許すバックトラ...
|PKRIPT_MAX_REGEX|512|パターンの最大バイト数|
PKRIPT_JSX を 0 にすると < は比較演算子としてだけ働きます...
PKRIPT_REGEX を 0 にすると / は除算としてだけ働きます。PK...
*** 1リクエストあたりの上限 [#nfa67e6d]
1ページに #pkript をいくつ書いても、wiki.convert の入れ子...
|~定数名|~既定値|~説明|
|PKRIPT_MAX_STEPS|1000000|評価ステップ数|
|PKRIPT_MAX_TIME|3|実行時間(秒)。Pkript の中で過ごした...
|PKRIPT_MAX_MEMORY|memory_limit の3/4|メモリ使用量|
|PKRIPT_MAX_CONVERT|32|wiki.convert の呼び出し回数|
|PKRIPT_MAX_READS|5000|ページの参照回数(wiki.exists / so...
|PKRIPT_MAX_WRITES|4|ページの書き込み回数|
*** 1回の実行・1つの値の上限 [#yddc2152]
|~定数名|~既定値|~説明|
|PKRIPT_MAX_DEPTH|64|関数の最大呼び出し深度|
|PKRIPT_MAX_LOOP|100000|1ループの最大繰り返し回数|
|PKRIPT_MAX_STRING|1048576|文字列の最大バイト数(1MB)|
|PKRIPT_MAX_ARRAY|10000|配列の最大要素数|
|PKRIPT_MAX_PAGES|1000|wiki.pages が返せる最大ページ数|
|PKRIPT_MAX_PAGE_BYTES|524288|書き込めるページの最大バイ...
|PKRIPT_MAX_IMPORTS|16|import できる最大スクリプト数|
|PKRIPT_MAX_IMPORT_DEPTH|4|import の最大深度|
*** 権限とキャッシュ [#m57a6d0e]
|~定数名|~既定値|~説明|
|PKRIPT_WRITE_MIN_TRUST|PKRIPT_TRUST_FILE|ページを書き込...
|PKRIPT_IMPORT_LOWER_TRUST|0|自分より信頼度の低いスクリプ...
|PKRIPT_SECRET_FILE|CACHE_DIR . 'pkript_secret.dat'|CSRF...
|PKRIPT_AST_CACHE|1|解析済みスクリプトを cache/ に保存す...
|PKRIPT_DEBUG|1|エラーに行番号と列番号を出すか、console.l...
|PKRIPT_MAX_LOG|100|console.log で残せる行数|
|PKRIPT_MAX_LOG_BYTES|8192|console.log 全体のバイト数|
これらは pukiwiki.ini.php で define すれば上書きできます。
** #aaa による直接呼び出し [#fbcc3589]
#pkript(hello) ではなく #hello と書いて直接呼び出せます。...
#hello(World)
&hello(World);
この動作は PKRIPT_BIND で切り替えます。0 にするとラッパー...
// pukiwiki.ini.php
define('PKRIPT_BIND', 0); // 既定は 1
lib/plugin.php を自分で改造している場合など、フォールバッ...
if (file_exists(PLUGIN_DIR . 'pkript.inc.php')) {
require_once(PLUGIN_DIR . 'pkript.inc.php');
if (function_exists('plugin_pkript_bind') && plugin_...
$exist[$name] = TRUE;
$count[$name] = 1;
return TRUE;
}
}
** セキュリティ [#je4eecaa]
*** 信頼度 [#w3340f80]
スクリプトをどこに置いたかで権限が決まります。
|~置き場所|~信頼度|~ページの書き込み|h
|ファイル(plugin/pkript/script/)|PKRIPT_TRUST_FILE|でき...
|凍結ページ(:config/pkript/script/)|PKRIPT_TRUST_FROZEN...
|編集可能ページ(:config/pkript/script/)|PKRIPT_TRUST_PA...
読み出し、表示、計算はどの信頼度でも同じように使えます。...
**** import と信頼度 [#r705c984]
import しても権限は増えません。
- 実行全体が、関わったスクリプトのうち''一番低い信頼度''...
- 自分より信頼度の低いスクリプトは読み込めません。編集可...
**** CSRFトークン [#u31b1f04]
wiki.write と wiki.append は wiki.token() のトークンを要...
認証を設定していないWikiでは紐付ける相手がいないため、ト...
*** HTMLサニタイザ [#i13629b8]
スクリプトが出力したHTMLは自動で検査され、危険なタグや属...
- script, iframe 等の危険なタグは無効化されます。
- onclick 等のイベント属性は除去されます。
- href, src の javascript: や data: スキームは除去されま...
- class や id には自動で pkript- 接頭辞が付与されます。
*** style属性で使えるCSS [#mc19c12c]
プロパティのホワイトリストと、値のパターン検査の二段構え...
|~分類|~通すもの|h
|色・文字|color, background-color, font-*, text-*, line-h...
|箱|margin*, padding*, border*, box-shadow, box-sizing, w...
|表|border-collapse, border-spacing, table-layout, captio...
|Flexbox|flex*, justify-*, align-*, order, gap, row-gap, ...
|Grid|grid-template-*, grid-auto-*, grid-area, grid-colum...
|動き|transition*, animation*, transform, transform-origi...
<div style="transform:rotate(3deg); transition:all 0.3s ...
''通さないもの''は、見た目ではなく''位置''に関わるもので...
- position と z-index は通しません(fixed / absolute でWi...
- ビューポート単位(vw / vh)は通しません(ウィンドウに対...
- url(...) を含む値は通しません。したがって background-im...
- expression(...)、javascript:、@import、\、/* を含む値は...
- 関数はホワイトリスト制です。rgb / rgba / hsl / hsla、tr...
値が規則に合わないプロパティは、そのプロパティだけ黙って...
animation-name が指すキーフレームは''スクリプトからは定義...
ページ名:
既存のページ名で編集する