読み込んだ「.hex」ファイルを、ブラウザ上に入力したアドレスとデータで書き換えます。
- 書き換えたい.hexファイルを指定します。
- 書き換えたいアドレスとデータを、16進数で指定します。最大8個まで指定できます。
- 送信すると、書き換えられた.hexファイルがダウンロードされます。
- downnloadチェックボックスを外すと、.hexファイルは画面に表示されます。
制限:
- 元の.hexファイルの範囲内のアドレスしか、書き換えできません。
- 例えば、0x1000-0x1fffの範囲である.hexファイルに対して、0x0100や0x2000のアドレスを指定しても、無視されます。
簡単なプリント基板イメージを動的生成するためのスクリプトです。
URLの「?」以降に、URLエンコードした文字列(後述)を指定すると、画像に変換して返します。
- 日本語が指定できます(標準ではEUCエンコードを受け付けます)
- URLの文字数に制限があるので、大きめの基板には対応できません。ユニバーサル基板に組んだ小さな回路をwikiにメモするのにご利用ください。
lwgから利用すると、自動的にURLエンコードがおこなわれますので、以下のように、簡単に基板画像を埋め込むことができます。 [pukiwikiからもご利用いただけます] 。
[&null;[..(1)..(18)..!......!....6.(d4MHz)!.(u0.1)6636*..3.!.6(b96666669)...!......!......!......!..(9)..(10)..>>/circuitboard.php/.png]] ..(1)..(18)..!......!....6.(d4MHz)!.(u0.1)6636*..3.!.6(b96666669)...!......!......!......!..(9)..(10)..>>/env/circuitboard/circuitboard.php/.png
書き方は以下の通りです。
- まず、基板のランド(穴)を「」で、穴のないところを「.」であらわします。 ...... ...... ..... .... ...**. ...... ...... ...... ......
- 改行のかわりに「!」を使い、1行にします。 ......!......!.....!....!...**.!......!......!......!....*..
- これを、クエリに渡すと、画像が表示されます。
circuitboard.php?......!......!.....!....!...**.!......!......!......!...... ......!......!.....!....!...**.!......!......!......!......>>/env/circuitboard/circuitboard.php/.png
- 文字は、「(+5V)」のように、「.」や「」のあとに入れます。
circuitboard.php?..(1)..(18)..!......!.....!....!...**.!......!......!......!..(9)..(10).. ..(1)..(18)..!......!.....!....!...**.!......!......!......!..(9)..(10)..>>/env/circuitboard/circuitboard.php/.png
- 下向きの文字は「(d0.1)」のようにdではじめます。uが上向き、lが左向き、dが下向き、rが右向きです。省略すると右向きです。
circuitboard.php?..(1)..(18)..!......!....**.(d4MHz)!.(u0.1)...!...**.!......!......!......!..(9)..(10).. ..(1)..(18)..!......!.....(d4MHz)!.(u0.1)...!....!......!......!......!..(9)..(10)..>>/env/circuitboard/circuitboard.php/.png
- パターン(配線)は、数字の並びで指定します。向きはテンキーと同じで、「6」が右、「8」が上、「4」が左、「2」が下です。
circuitboard.php?..(1)..(18)..!......!....6.(d4MHz)!.(u0.1)6636*..3.!.6...!......!......!......!..(9)..(10).. ..(1)..(18)..!......!....6.(d4MHz)!.(u0.1)6636*..3.!.6...!......!......!......!..(9)..(10)..>>/env/circuitboard/circuitboard.php/.png
- ピン間を通す場合は、「(a366663)」のように、括弧とaのあとに数字を並べます。こうすると、半マス単位になります。
- aのかわりにbを使うと、色が変わり、反対面の指定になります。
circuitboard.php?..(1)..(18)..!......!....6.(d4MHz)!.(u0.1)6636*..3.!.6(b96666669)...!......!......!......!..(9)..(10).. ..(1)..(18)..!......!....6.(d4MHz)!.(u0.1)6636*..3.!.6(b96666669)...!......!......!......!..(9)..(10)..>>/env/circuitboard/circuitboard.php/.png
構文をまとめると、以下のようになります。 {{(.)|(*)}{{(1-9)r}|(()文字列)|{((l)|((u)|((r)|((d)}文字列)|{((a)|((b)}{(1-9)r}())|r}}rr(!)}>>/env/syntaxdiagram/syntaxdiagram.php/.png
ロジックの波形グラフを動的生成するためのスクリプトです。
URLの「?」以降に、URLエンコードした波形文字列を指定すると、画像に変換して返します。 -日本語が指定できます(標準ではEUCエンコードを受け付けます)
lwgから利用すると、自動的にURLエンコードがおこなわれますので、以下のように、簡単に波形のグラフを埋め込むことができます。 [pukiwikiからもご利用いただけます] 。
[&null;[CLK-OUT(0)|CLK+OUT(1)|CLK-|CLK+OUT(2)|CLK-|CLK+OUT(3)|CLK->>/wavediagram.php/.png]] CLK-OUT(0)|CLK+OUT(1)|CLK-|CLK+OUT(2)|CLK-|CLK+OUT(3)|CLK->>&wavephp;
構文は以下の通りです。
- 信号名のあとに記号を入力します
- 「DATA+」は、DATAがH
- 「DATA-」は、DATAがL
- 「DATA!」は、DATAがZ (ハイインピーダンス)
- 「DATA?」は、DATAがX (不定)
- 「DATA(name)」は、DATAの値がname
- 時間を1コマ進めるには、「|」を入力します
コメントを入れることができます。
- 「|」の前にコメントを入れると、その位置に表示されます
[&null;[CLK-OUT(2)|CLK+OUT(3)|CLK-|CLK+OUT(0)overflow|CLK-|CLK+OUT(1)|CLK-|CLK+OUT(2)|CLK->>/wavediagram.php/.png]] CLK-OUT(2)|CLK+OUT(3)|CLK-|CLK+OUT(0)overflow|CLK-|CLK+OUT(1)|CLK-|CLK+OUT(2)|CLK->>&wavephp;
- コメントの最後に「#」を入れると、幅のコメントになります
- 次のコメントがない場合は、「#」だけを入力します
- wavediagramは「>」も扱えますが、lwgやpukiwikiでは「>」を入れることができないので、「#」を使用します
[&null;[CLK-||CLK+min10ms#||||CLK-#|>>/wavediagram.php/.png]] CLK-||CLK+min10ms#||||CLK-#|>>&wavephp;
全体の構文は以下のようになります。 {{[信号名]{(+)|(-)|(!)|(?)|(()値)}r}{[コメント]|}{(#)|(>)|}r(|)}>>&syntaxphp;
ブロック図の画像を動的生成するためのスクリプトです。
URLの「?」以降に、URLエンコードした構文文字列を指定すると、画像に変換して返します。 -日本語が指定できます(標準ではEUCエンコードを受け付けます)
lwgから利用すると、自動的にURLエンコードがおこなわれますので、以下のように、簡単にブロック図を埋め込むことができます。 [pukiwikiからもご利用いただけます] 。
[&null;[(#f00PDCAサイクル)#fffn[#8ffPlan]ES[#fc8Do]SW[#ff8Check]WN[#8f8Action]NE>>/blockdiagram.php/.png]] (#f00PDCAサイクル)#fffn[#8ffPlan]ES[#fc8Do]SW[#ff8Check]WN[#8f8Action]NE>>&blockphp;
構文は以下の通りです。
- 四角い枠に入れる文字は[XYZ]のように「[」と「]」で囲みます
([){(#)[RGB]|}文字列>>&syntaxphp;
- 背景に色をつける場合は、「[#f00XYZ]」のように#f00の部分で色を指定します
- 背景が明るいと文字は黒で、背景が暗いと文字は白で描画されます
- #の文字を描画したい場合は、#fffのあとに#を記述してください(背景色が白になり、省略時と同じになります)
- 楕円の枠に入れる文字は(XYZ)のように「(」と「)」で囲みます
((){(#)[RGB]|}文字列)>>&syntaxphp;
- #f00形式で背景色が指定できます
- 枠と枠の間に入れる矢印は、NEWSnewsの組み合わせで示します
{(#)[RGB]|}{{(N)|(E)|(W)|(S)|(n)|(e)|(w)|(s)}r}>>&syntaxphp;
- 文字は方角と同じになっており、大文字だと太い矢印になります
- NEなら右上向きに太い矢印が、swなら左下向きに細い矢印が描かれます (#000スタート){N[N]}{NE[NE]}{E[E]}{SE[SE]}{S[S]}{SW[SW]}{W[W]}{NW[NW]}>>&blockphp; (#000スタート){n[n]}{ne[ne]}{e[e]}{se[se]}{s[s]}{sw[sw]}{w[w]}{nw[nw]}>>&blockphp;
- 矢印を描いた先が、次の枠の位置になります
[&null;[&null;[スタート]E[ゴール]>>/blockdiagram.php/.png]]
[&null;[&null;[スタート]e[中継点]S[ゴール]>>/blockdiagram.php/.png]] [スタート]E[ゴール]>>'&blockphp; [スタート]e[中継点]S[ゴール]>>&blockphp; - 矢印に色をつける場合は、「#f00NE」のように記述します
[&null;[&null;[スタート]#f00NE[ゴール]>>/blockdiagram.php/.png]] [スタート]#f00NE[ゴール]>>&blockphp; - 矢印を描かないで次の枠に移動したいときは、「#fffnw」のように記述してください(白で描くので矢印が見えなくなります)
[&null;[&null;[スタート]#fffnw[ゴール]>>/blockdiagram.php/.png]] [スタート]#fffnw[ゴール]>>&blockphp; - 戻ってくる矢印を描くときは、「[スタート]#fffe[ゴール]W」のように記述します(#fffeは表示されず、次のWが表示されます) [スタート]#fffe[ゴール]W>>&blockphp;
- 位置を記憶するには、「{」と「}」を使います
- 「[スタート]{E[中継点]E[ゴール1]}W[ゴール2]」とすると、「{」のところで位置が記憶され、「}」のところで復旧されるため、「[スタート]E[中継点]E[ゴール1]」と、「[スタート]W[ゴール2]」を重ねたように描画されます [スタート]{E[中継点]E[ゴール1]}W[ゴール2]>>&blockphp;
- 以下のような対立解消図も描くことができます。
[&null;[(#f00コンフリクト){#fffn{s}[行動1]w[行動1のゴール]sw}#fffs{n}[行動2]w[行動2のゴール]nw[共通のゴール]>>&blockdiagram;]] (#f00コンフリクト){#fffn{s}[行動1]w[行動1のゴール]sw}#fffs{n}[行動2]w[行動2のゴール]nw[共通のゴール]>>&blockphp;
テキストファイルをアップロードすると、HTMLエスケープを追加してブラウザに表示します。
アップロードされたファイルをアクセスするサンプルです。
タブ区切り形式のファイルをアップロードすると、ブラウザ上にTABLEを出力します。
アップロードされたファイルをアクセスするサンプルです。
ファイルをアップロードすると、ブラウザ上に16進ダンプを出力します。
アップロードされたファイルをアクセスするサンプルです。
構文図の画像を動的生成するためのスクリプトです。
URLの「?」以降に、URLエンコードした構文文字列を指定すると、画像に変換して返します。 -日本語が指定できます(標準ではEUCエンコードを受け付けます)
lwgから利用すると、自動的にURLエンコードがおこなわれますので、以下のように、簡単に構文図を埋め込むことができます。 [pukiwikiからもご利用いただけます] 。
[&null;[{(/)|}{ディレクトリ名|r}ファイル名[拡張子]>>/syntaxdiagram.php/.png]] {(/)|}{ディレクトリ名|r}ファイル名[拡張子]>>/env/syntaxdiagram/syntaxdiagram.php/.png
構文は以下の通りです。 -そのまま記述する文字列は(abc)のように「(」と「)」で囲みます(最低でも1文字必要です) (abc)>>/env/syntaxdiagram/syntaxdiagram.php/.png -書き換えて使用するところは[abc]のように「[」と「]」で囲みます(最低でも1文字必要です) [abc]>>/env/syntaxdiagram/syntaxdiagram.php/.png -(abc)と(def)と(ghi)の中からどれか1つを選ぶ場合は「{(abc)|(def)|(ghi)|}」のようにします(最後の「|」のあとに何もないと、省略してもよいことを示します) {(abc)|(def)|(ghi)}>>/env/syntaxdiagram/syntaxdiagram.php/.png {(abc)|(def)|}>>/env/syntaxdiagram/syntaxdiagram.php/.png -(abc)を(,)または(/)で区切って繰り返せる場合は「{(abc)r(,)r(/)}」のようにします(最後の「r」のあとに何もないと、区切らずに繰り返せることを示します) {(abc)r(,)r(/)}>>/env/syntaxdiagram/syntaxdiagram.php/.png {(abc)r(,)r}>>/env/syntaxdiagram/syntaxdiagram.php/.png
狭い表の見出しなどに利用できるような、90°回転フォントによる画像を動的生成するためのスクリプトです。
URLの「?」以降に、URLエンコードした文字列を指定すると、その文字列を縦に配置した画像を返します。 -日本語が指定できます(標準ではEUCエンコードを受け付けます)
lwgから利用すると、自動的にURLエンコードがおこなわれますので、 縦配置>>/env/vtext/vtext.php/.png のように簡単に画像を埋め込むことができます。 [pukiwikiからもご利用いただけます] 。
lwg(light work group)は、ダウンロードやサポート情報を中心した、リードオンリーのホームページを簡単に作成するための、PHPスクリプトです。
lwgは、以下の目標で作成されています。 -最低限のコンテンツマネジメントを備えている(プレビュー後に公開したり、公開後に前のバージョンに戻したりできる) -詳細ページと一覧ページなど、関連するページが自動生成される -全ページに同じHTMLを書くような、無駄な作業をしなくてよい
このページ自身が、lwgで生成されています。機能の詳細は、ダウンロードページをご覧ください。
[デモ] は、このページの管理画面になっています。内容の変更はできませんが、ページがどのように記述されているのかを見ることができます。
PCBEにより作図されたプリント基板データを、PDFに変換します。
フリーのプリント基板エディタ「pcbe.exe」のデータをアップロードすると、PDFに変換して返します。パターン・レジスト・シルクなどは、重なりも考慮して色分けされます。 -両面印刷用に出力されます -用紙サイズはA3-A5の中で、印刷できる最小サイズが自動選択されます
テキストをPDFに変換します。タブなども展開されるので、ソースの印刷に便利です。
テキストファイルをアップロードすると、PDFに変換して返します。 -固定ピッチです -行番号とルーラーも表示されます -タブは8タブに展開されます -nkfコマンドがあれば、文字コードは自動判別にできます
読み込んだ「.hex」ファイルを、ブラウザ上に入力したアドレスとデータで書き換えます。
- 書き換えたい.hexファイルを指定します。
- 書き換えたいアドレスとデータを、16進数で指定します。最大8個まで指定できます。
- 送信すると、書き換えられた.hexファイルがダウンロードされます。
- downnloadチェックボックスを外すと、.hexファイルは画面に表示されます。
- 元の.hexファイルの範囲内のアドレスしか、書き換えできません。
- 例えば、0x1000-0x1fffの範囲である.hexファイルに対して、0x0100や0x2000のアドレスを指定しても、無視されます。
[デモページ] もご利用ください。
180213:
- 初版
簡単なプリント基板イメージを動的に生成するためのスクリプトです。
-PHP4またはPHP5 -要GDライブラリ・FreeTypeライブラリ
別途、mikachanなどのTTFフォントが必要です。env.phpにパスを指定してください。
URLの「?」以降に、URLエンコードした文字列を指定すると、画像に変換して返します。 -日本語が指定できます(標準ではEUCエンコードを受け付けます) -lwgから利用すると、自動的にURLエンコードがおこなわれます
[デモページ] もご利用ください。
構文は [デモページ] を参照してください。
100801:
- 初版
ロジックの波形グラフを動的生成するためのスクリプトです。
-PHP4またはPHP5 -要GDライブラリ・FreeTypeライブラリ
別途、mikachanなどのTTFフォントが必要です。env.phpにパスを指定してください。
URLの「?」以降に、URLエンコードしたブロック図文字列を指定すると、画像に変換して返します。 -日本語が指定できます(標準ではEUCエンコードを受け付けます) -lwgから利用すると、自動的にURLエンコードがおこなわれます
[デモページ] もご利用ください。
構文は以下の通りです。
- 信号名のあとに記号を入力します
- 「DATA+」は、DATAがH
- 「DATA-」は、DATAがL
- 「DATA!」は、DATAがZ (ハイインピーダンス)
- 「DATA?」は、DATAがX (不定)
- 「DATA(name)」は、DATAの値がname
- 時間を1コマ進めるには、「|」を入力します
- 「|」の前にコメントを入れることができます
- コメントの最後に「#」を入れると、幅のコメントになります
- 次のコメントがない場合は、「#」だけを入力します
- wavediagramは「>」も扱えますが、lwgやpukiwikiでは「>」を入れることができないので、「#」を使用します
100129:
- 初版
ブロック図の画像を動的生成するためのスクリプトです。
-PHP4またはPHP5 -要GDライブラリ・FreeTypeライブラリ
別途、mikachanなどのTTFフォントが必要です。env.phpにパスを指定してください。
URLの「?」以降に、URLエンコードしたブロック図文字列を指定すると、画像に変換して返します。 -日本語が指定できます(標準ではEUCエンコードを受け付けます) -lwgから利用すると、自動的にURLエンコードがおこなわれます
[デモページ] もご利用ください。
構文は以下の通りです。
- 四角い枠に入れる文字は[XYZ]のように「[」と「]」で囲みます
- 背景に色をつける場合は、「[#f00XYZ]」のように#f00の部分で色を指定します
- 背景が明るいと文字は黒で、背景が暗いと文字は白で描画されます
- #の文字を描画したい場合は、#fffのあとに#を記述してください(背景色が白になり、省略時と同じになります)
- 楕円の枠に入れる文字は(XYZ)のように「(」と「)」で囲みます
- #f00形式で背景色が指定できます
- 枠と枠の間に入れる矢印は、NEWSnewsの組み合わせで示します
- 文字は方角と同じになっており、大文字だと太い矢印になります
- 矢印を描いた先が、次の枠の位置になります
- NEなら右上向きに太い矢印が、swなら左下向きに細い矢印が描かれます
- 矢印に色をつける場合は、「#f00NE」のように記述します
- 矢印を描かないで次の枠に移動したいときは、「#fffnw」のように記述してください(白で描くので矢印が見えなくなります)
- 戻ってくる矢印を描くときは、「[ゴール]#fffw[スタート]E」のように記述します(#fffwは表示されず、次のEが表示されます)
- セル位置を記憶するには、「{」と「}」を使います
- 「[スタート]{E[中継点]E[ゴール1]}W[ゴール2]」とすると、「{」のところで座標が記憶され、「}」のところで復旧されるため、「[スタート]E[中継点]E[ゴール1]」と、「[スタート]W[ゴール2]」を重ねたように描画されます
091207:
- 初版
lwg(light work group)は、このサイトのような、ダウンロード・サポート情報を中心とした、リードオンリーのホームページを作成するツールです。
- PHP4またはPHP5
- SQLite2 (3でも動くと思いますが、データのバイナリ互換がありません)
**これはコメント機能を評価するためのアルファ版です。**今後大きく変更される可能性があります。コメント機能が必要ない場合は、 [現行バージョン] をご検討ください。
ドキュメントは整備中ですので、当面は [サポートページ] をご利用ください。印刷する場合は [一括表示] もご利用ください。
091028:
- コメント処理で、$variable->getline()がnullであることを考慮していなかったので、修正。
- #showcommentdigestで、DB_genre等がクリアされていなかったのを修正。
091001:
- コメントレコードのtextの合計が2048バイトを超えるコメントをエラーに。
090930:
- コメント機能を実装。
- ロボットによる投稿は、Refererが付かないことを想定して、refererにindexを用意。
090915:
- CGI呼び出しではPHP_SELFがうまく機能しないので、ORIG_PATH_INFOも使用するように修正。
- コメント機能。
- #showcommentから#endの間が、&DB_idのコメントでループする機能を追加。
- #commentdigest以降は、コメントダイジェストの定義になる。&CM_name;などが使用可能。
- #showcommentdigestは、コメントダイジェストに置換される。
- 本文中に「[&null;[コメントを書く>?comment=&DB_id;]]」と書くと、コメントページにジャンプ。
- genre「?comment」で、コメントページを定義できる。
090914:
- genre「?search」で、検索結果フォーマットをカスタマイズできるように修正。
- #searchresultの行は、各検索結果のgenreの#searchdigestで置き換わる
- ディフォールトは以下の通り。 #searchresult &nodata;
090725:
- foreachcommand::output()で、項目が1つもヒットしないと、warningが出る。要修正。
090505:
- php5でwarningが出ていたのを修正。
090505:
- テキストファイルからのアップロードをサポート。テキストファイルの形式は以下の通り。
- 改ページで区切る。
- #lead・#body以外で、* で始まる行は、タイトルとなる。
- #bodyの先頭に、「// tagid=0000ffff;」を入れる。無いとエラー。
- 0000ffffのところはユニークIDにする。再アップロードした場合に、ここを見て上書きされる。
- 行そのものを記述しなかった場合、新規作成時は空欄に、更新時は元のままになる。
- (タイトル) #genre news #type #version #date 2009/05/05 #show 0 #par0 (パラメータ0) #par1 #par2 #par3 #lead ここがleadの文章です。 #body // tagid=0000ffff; ここがbodyの文章です。 #end (改ページ)
090106:
- いくつかwarningが出ていたのを修正。
090106:
- エンコードチェック用の文字列を改善。
- 「[&null;[test]] > [&null;[test2]]」のような形式が正しく解釈されなかったのを修正。
- 「+」によるリストが、「>」や「 」で中断されないように改善。
- 「|>[&null;[link]]|text|」のような表で、先頭の「>」がcolspanと解釈されていたのを修正。
- 「|
[&null;[link]]|text|」のような表で、先頭の「」がrowspanと解釈されていたのを修正。 - 「''&null;'strong''&null;'」形式の強調に対応。
- env.phpでconvertglobalurl()を定義することで、[&null;[http&null;://]]形式の外部リンクをリダイレクタ経由にする機能に対応。
- ただし、#sethtmlなどで直接リンクを書いた場合は変換されない。
- env.phpでdebugsysteminfo()を使用していると、edit.phpが動作しないのを修正。
- いくつかwarningが出ていたのを修正。
070419:
- ダウンロード開始
070417:
- パーサを高速化
061127:
- 初版
構文図の画像を動的生成するためのスクリプトです。
-PHP4またはPHP5 -要GDライブラリ・FreeTypeライブラリ
別途、mikachanなどのTTFフォントが必要です。env.phpにパスを指定してください。
URLの「?」以降に、URLエンコードした構文文字列を指定すると、画像に変換して返します。 -日本語が指定できます(標準ではEUCエンコードを受け付けます) -lwgから利用すると、自動的にURLエンコードがおこなわれます
[デモページ] もご利用ください。
構文は以下の通りです。 -そのまま記述する文字列は(abc)のように「(」と「)」で囲みます(最低でも1文字必要です) -書き換えて使用するところは[abc]のように「[」と「]」で囲みます(最低でも1文字必要です) -(abc)と(def)と(ghi)の中からどれか1つを選ぶ場合は「{(abc)|(def)|(ghi)|}」のようにします(最後の「|」のあとに何もないと、省略してもよいことを示します) -(abc)を(,)または(/)で区切って繰り返せる場合は「{(abc)r(,)r(/)}」のようにします(最後の「r」のあとに何もないと、区切らずに繰り返せることを示します)
090103:
- warningが出ることがあったのを修正
061125:
- 初版
複数のテキストファイルを1つのPDFに変換するPHPスクリプトです。PDFLibを使用しています。
テキストファイルをアップロードすると、PDFに変換して返します。 -固定ピッチです -行番号とルーラーも表示されます -タブは8タブに展開されます -nkfコマンドがあれば、文字コードは自動判別にできます
[デモページ] もご利用ください。
090103
- ライセンスキーの設定がうまく動作していなかったのを修正
070715
- 複数ファイルに対応
061103
- 初版
複数のテキストファイルを1つのPDFに変換するPHPスクリプトです。PDFLibを使用しています。
テキストファイルをアップロードすると、PDFに変換して返します。 -固定ピッチです -行番号とルーラーも表示されます -タブは8タブに展開されます -nkfコマンドがあれば、文字コードは自動判別にできます
[デモページ] もご利用ください。
070715
- 複数ファイルに対応
061103
- 初版
テキストファイルをアップロードすると、HTMLエスケープを追加してブラウザに表示します。
ページを開くと、ファイルをアップロードするための入力フォームが表示されます。「参照」などと表示されているボタンを押してアップロードするファイルを選択し、送信すると、HTMLエスケープされたテキストが表示されます。
[デモページ] もご利用ください。
070417:
- 初版
狭い表の見出しなどに利用できるような、90°回転フォントによる画像を動的生成するためのスクリプトです。
-PHP4またはPHP5 -要GDライブラリ・FreeTypeライブラリ
別途、mikachanなどのTTFフォントが必要です。env.phpにパスを指定してください。
URLの「?」以降に、URLエンコードした文字列を指定すると、その文字列を縦に配置した画像を返します。 -日本語が指定できます(標準ではEUCエンコードを受け付けます)
[デモページ] もご利用ください。
061125: -初版
構文図の画像を動的生成するためのスクリプトです。
-PHP4またはPHP5 -要GDライブラリ・FreeTypeライブラリ
別途、mikachanなどのTTFフォントが必要です。env.phpにパスを指定してください。
URLの「?」以降に、URLエンコードした構文文字列を指定すると、画像に変換して返します。 -日本語が指定できます(標準ではEUCエンコードを受け付けます) -lwgから利用すると、自動的にURLエンコードがおこなわれます
[デモページ] もご利用ください。
構文は以下の通りです。 -そのまま記述する文字列は(abc)のように「(」と「)」で囲みます(最低でも1文字必要です) -書き換えて使用するところは[abc]のように「[」と「]」で囲みます(最低でも1文字必要です) -(abc)と(def)と(ghi)の中からどれか1つを選ぶ場合は「{(abc)|(def)|(ghi)|}」のようにします(最後の「|」のあとに何もないと、省略してもよいことを示します) -(abc)を(,)または(/)で区切って繰り返せる場合は「{(abc)r(,)r(/)}」のようにします(最後の「r」のあとに何もないと、区切らずに繰り返せることを示します)
061125:
- 初版
タブ区切りのテキストファイルをアップロードすると、HTMLのTABLEに変換して返します。
ページを開くと、ファイルをアップロードするための入力フォームが表示されます。「参照」などと表示されているボタンを押してアップロードするファイルを選択し、送信すると、TABLEに変換されたHTMLが表示されます。
[デモページ] もご利用ください。
070417:
- 初版
PHPのファイルアップロードのサンプルです。アップロードされたファイルを16進ダンプします。
-PHP4またはPHP5
ページを開くと、ファイルをアップロードするための入力フォームが表示されます。「参照」などと表示されているボタンを押してアップロードするファイルを選択し、送信すると、16進ダンプされたテキストが表示されます。
[デモページ] もご利用ください。
061103:
- 初版
PCBEにより作図されたプリント基板データを、PDFに変換します。
- PHP4またはPHP5
- PDFLib
フリーのプリント基板エディタ「pcbe.exe」のデータをアップロードすると、PDFに変換して返します。パターン・レジスト・シルクなどは、重なりも考慮して色分けされます。 -両面印刷用に出力されます -用紙サイズはA3-A5の中で、印刷できる最小サイズが自動選択されます
[デモページ] もご利用ください。
061103:
- 初版
テキストファイルをPDFに変換するPHPスクリプトです。PDFLibを使用しています。
テキストファイルをアップロードすると、PDFに変換して返します。 -固定ピッチです -行番号とルーラーも表示されます -タブは8タブに展開されます -nkfコマンドがあれば、文字コードは自動判別にできます
[デモページ] もご利用ください。
061103
- 初版
PHP4用SQLite2エクステンションのLinux版ライブラリです。
SQLite2とPHP4に従います。現時点では、特に制限はありません。
Linux用です。Fedora core 5でビルドしました。もし自分の環境で動かない場合は、後述の方法でビルドしてみてください。
適当なディレクトリに置いて、PHP中からdl("../sqlite.so")のようにして組み込みます。組み込んだあとはSQLite関連の機能が使用可能になり、phpinfo()でも表示されます。
[サポートページの注意事項] を必ずご覧ください。
このライブラリは以下の手順で作りました。
- http://snaps.php.net/ から、php-devの4.4.xをダウンロードして展開する
- ./configure --prefix=/home/USER/php4/ --without-pear を実行する(インストール先が/home/USER/php4/になる)
- makeとmake installをおこなう(/home/USER/php4/にインストールされる)
- http://pecl.php.net/package/SQLite/ から、SQLite-1.0.3.tgzをダウンロードして展開する
- /home/USER/php4/bin/phpize を実行する
- ./configure --with-php-config=/home/USER/php4/bin/php-config を実行する
- makeをおこなう(modules/sqlite.soができる)
061102
- 初版
lwg(light work group)は、このサイトのような、ダウンロード・サポート情報を中心とした、リードオンリーのホームページを作成するツールです。
- PHP4またはPHP5
- SQLite2 (3でも動くと思いますが、データのバイナリ互換がありません)
[デモページ] もご利用ください。
ドキュメントは整備中ですので、当面は [サポートページ] をご利用ください。印刷する場合は [一括表示] もご利用ください。
070419:
- ダウンロード開始
070417:
- パーサを高速化
061127:
- 初版
lwg(light work group)のgenreテーブルの内容について説明します。
lwgでは、genre(ジャンル)を使ってcontent(コンテンツ)を分類します。genreごとに異なる設定ができるので、お知らせ、ダウンロードなどを別のジャンルに分けておくと便利です。genreはメニューバーに一覧表示されます。
genreテーブルには、以下の項目があります。
idは自動生成される番号です。
keyはジャンルを示す文字列です。半角英数字である必要があります。パスにこの文字列があらわれますので、downloadやsupportなど、わかりやすいものにすることをおすすめします。keyが空(ヌル文字列)である場合、トップページを意味します。
posは、メニューバーでの表示位置です。小さい方が左に表示されます。0の場合は、メニューバーに表示されなくなります。
bodyは、genreごとの表示方法を、コマンドで記述します。通常はこの中で、contentを読み込んで表示します。なお、コマンドを使わなくても、ここに書いた内容はそのまま表示されます。
keyが空(ヌル文字列)である場合は、configは全体の設定のためのコマンドを記述します。配色設定や、各ページで共通に使う変数定義などをおこなうことができます。
keyが空でない場合は、configはそのgenreのためのメモを記述します。このメモは [contentテーブル] の編集画面に表示されます。
lwg(light work group)のcontentテーブルの内容について説明します。
lwgでは、genre(ジャンル)を使ってcontent(コンテンツ)を分類します。個々の文書はcontentに記述します。
contentテーブルには、以下の項目があります。 -id -genre -title -type -version -date -show -par0 -par1 -par2 -par3 -lead -body
idは自動生成される番号です。
genreは、通常はgenreテーブルのkeyと同じ文字列を設定します。たとえばdownloadのジャンルなら「download」とします。編集画面では、genreごとに並び替えて表示されます。
title・type・version・date・par0・par1・par2・par3は、genreごとに用途を決めて使用します。genreのbodyのコマンドで、これらの項目ごとに並べ替えたり分類したりすることができます。
showは、ONだと表示されます。一時的に非公開にしたい場合は、OFFにします。
leadは、通常は見出しの文章を書きます。通常は検索の対象となります。
bodyは、通常は本文を書きます。通常はコマンドが使用できます。通常は検索の対象となります。
「通常は」とあるのは、 [genreテーブル] の設定によって機能を変えることができるためです。contentの各項目は、genre側では変数の形で参照されますので、自由な目的に使用することができます。
また検索については [genreコマンド] の#searchkeyで定義します。
項目の割り当てメモは、 [genreテーブル] のconfigに書いておくと、編集時に表示されて便利です。
lwg(light work group)で使用するコマンド(genre・content共通)について説明します。
lwgでは、Wikiに似たコマンドを採用しています。
genreでもcontentでも使用可能です。行の先頭に書いてください。
{(*)|(**)|(***)}[文章]>>&syntaxphp;
見出し行を作ります。「」だと大見出し(H1)、「」だと中見出し(H2)、「」だと小見出し(H3)になります。
{(-)|(--)|(---)}[文章]>>&syntaxphp;
箇条書き(UL)を作ります。「-」だと親項目、「--」だと子項目、「---」だと孫項目になります。
{(+)|(++)|(+++)}[文章]>>&syntaxphp;
番号つきの箇条書き(OL)を作ります。「+」だと親項目、「++」だと子項目、「+++」だと孫項目になります。
(----)>>&syntaxphp;
区切り線(HR)を作ります。
( )[整形済みテキスト]>>&syntaxphp;
行を半角スペースではじめると、ソースコードのような整形済みテキスト(PRE)になります。
(>)[引用文]>>&syntaxphp;
行を「>」ではじめると、引用文(BLOCKQUOTE)になります。
(|){[標準項目]|(~)[見出し]|( )[右寄せ]|( )[センタリング]( )|(>)|(^)r(|)}(|)>>&syntaxphp;
表(TABLE)を作ります。行頭に「|」を置き、項目間も「|」で区切り、行末に「|」を置きます。これを必要な行数だけ続けます。
項目の先頭が「~」だと、見出し項目になります。
項目が半角スペースで始まっていると、右寄せになります。項目が半角スペースで始まり、なおかつ半角スペースで終わっていると、センタリングになります。
項目が「~」だけだと、上の項目とつながります(rowspan)。項目が「>」だけだと右の項目とつながります(colspan)。
項目内で改行したいときは、&br;をご利用ください。
(//)[コメント]>>&syntaxphp;
行を「//」ではじめると、後半は無視されます。メモを書いておいたり、コマンドを一時的に無効にしたい場合に便利です。
genreでもcontentでも使用可能です。行の途中に入れることができます。
変数の内容に置き換わります。
contentテーブルの項目の内容に置き換わります。contentテーブルを選択するには、#setを用いて、DB_idなどに値を設定します。
改行(BR)に置き換わります。
([[)[URL](]])>>&syntaxphp;
リンクに置き換わります。たとえば http://www.nohost.nodomain/nopage.php?arg1=1&arg2=2#fragment のような指定ができます。リンク名はURLと同じになります。
([[)[リンク名]{(>)|(>>)|(>>>)}[ディレクトリ指定](]])>>&syntaxphp;
リンクに置き換わります。「 &null;」と「>」の間に表示するリンク名、「>」と「 」の間にリンクのパスを指定します。任意のリンク名が指定できますが、外部ページへのリンクは指定できません。
ディレクトリ指定が空の場合は、トップページへのリンクになります。
[&null;ダウンロード] のようにディレクトリ指定が「/」以外で始まっている場合は、genreのページへのリンクになります。
[&null;ダウンロード] のようにディレクトリ指定が「/」で始まっている場合は、lwgのベースURLからの相対指定になります。たとえば「/index.php」を指定すると、通常はトップページになります。
ディレクトリ指定が「.png」または「.jpeg」で終わっている場合は、画像がそのまま表示され、リンク名がalt(代替テキスト)になります。スクリプトなど、.pngや.jpegで終わらない場合に画像を表示するには、「/test.php/.png」のような指定をすることができます(この指定をされると、サーバはtest.phpを起動して、.pngというパラメータを渡します)。
「>」のかわりに「>>」を指定すると、URLの末尾に「?リンク名」が付きます。リンク名はEUCコードで記述され、URLエンコードされます。これは、スクリプトを起動してリンク名を渡したいような場合に使用します。
「>」のかわりに「>>>」を指定すると、URLの末尾に「?URL#リンクID」が付きます。URLはこのページ自身のURLで、#のあとにリンクIDが付きます。リンクIDは、ページ内で重複しないように割り当てられます。これは、スクリプトを起動してこのページを処理したいときに使用します。渡されたURLを読み込み、同じリンクIDを探すことで、どのリンクからスクリプトが起動されたかを知ることができます。
(’’’)[テキスト](’’’)>>&syntaxphp;
テキストが太字になります。lwg090106版以降で使用可能です。
lwg(light work group)で使用するコマンド(genre専用)について説明します。
lwgでは、Wikiに似たコマンドを採用しています。
genreでのみ使用可能です。行の途中に入れることはできません。
設定した変数は、&<変数名>;で参照できます。
「DB_<項目名>」のように、contentテーブルの項目名に「DB_」をつけた変数は、設定すると自動的に検索がおこなわれ、項目名が設定されます。たとえば、「#set DB_id 1」とすると、contentテーブルのid=1の内容が、「DB_genre」「DB_title」「DB_body」など、すべての変数に設定されます。通常は、これらの変数は「#geturl」「$geturlid」「#foreach」などを使用して自動設定します。
(#set)[変数名]{[値]|}>>&syntaxphp;
変数に値を設定します。値を指定しなかった場合、変数名を消去します。
(#sethtml)[変数名][HTML値]>>&syntaxphp;
変数名に値を設定します。HTMLタグを入れることができます。
(#setstart)[変数名]>>&syntaxphp;
(#end)>>&syntaxphp;
「#setstart」の次の行から、「#end」の前の行までを、変数に設定します。ネストはできません。
(#sethtmlstart)[変数名]>>&syntaxphp;
(#end)>>&syntaxphp;
「#setstart」の次の行から、「#end」の前の行までを、変数に設定します。HTMLタグを入れることができます。ネストはできません。
genreでのみ使用可能です。
(#geturl){[変数名]|}>>&syntaxphp;
URLの相対パス(たとえばdownload/1/1)から、先頭の1つ(たとえばdownload)を取り出して、変数に設定します。その上で、相対パスの最後でない場合(まだ相対パスが残っている場合や、全部読み取ってしまった後)は、次の#geturlまたは$geturlidまでを読み飛ばします。ちょうど相対パスの最後だった場合は、読み飛ばさず、有効になります。
この仕組みにより、たとえば相対パスが「download」の場合は最初の#geturl以降だけが処理され、相対パスが「download/1」の場合には2番目の#geturl以降だけが処理されるという具合に、パスにより処理を変えることができます。
変数が省略された場合は、相対パスに対しては何もせず、常に有効になります(読み飛ばされません)。
以下の例は、パスの深さに応じて別の画面を表示します。最後の#geturl以降は、常に表示されます。 #geturl DB_genre ジャンルのみ #geturl DB_title ジャンル/タイトル #geturl DB_type ジャンル/タイトル/タイプ #geturl が指定されました
(#geturlid){[変数名]|}>>&syntaxphp;
「#geturl」と同じですが、相対パスから数字を読み取り、それをcontentテーブルのidとみなします。そのidに指定されていた項目が、変数に設定されます。変数名は、「DB_title」など、項目名に「DB_」をつけたものである必要があります。
たとえば「#geturlid DB_type」で、相対パスから「1」が読み取られた場合は、contentテーブルのid=1を見て、そのtype項目の内容がDB_type変数に設定されます。
項目名を変更しても同じidであれば参照できるのと、文字化けの危険があるのとで、genre以外はidを使うことをおすすめします。
(#searchkey){[変数名]r}>>&syntaxphp;
(#end)>>&syntaxphp;
「#searchkey」と「#end」の間に、検索結果表示用のコマンドを書きます。通常はこの部分は表示されませんが、contentが検索にヒットした場合は、この部分が検索結果して表示されます。
変数名は検索対象の項目を順に並べたもので、「DB_title」など、項目名に「DB_」をつけたものである必要があります。
検索結果の中に、コンテンツへのリンクを含めてください。また、検索結果のダイジェストとして、SEARCHDIGEST変数が使用できます。
検索結果の最後にはnodata変数が表示されるので、#searchkeyの中で「#set nodata &null;」としてクリアしてください。nodata変数は初期値は「Sorry, no content found.」となっていますが、genreテーブルのconfigで変更することができます。
使用例は以下の通りです。 #searchkey DB_title DB_lead DB_body #set nodata &null; [&DB_title;] > &SEARCHDIGEST; #end
このコマンドが指定されていないgenreは、検索対象となりません。
(#foreach)[変数名]{[最大数]|}>>&syntaxphp;
(#end)>>&syntaxphp;
contentテーブルから1つずつ変数を設定しながら、「#foreach」の次の行から「#end」の前の行までを繰り返します。このとき、同じ内容のレコードが複数あっても、一度しか実行されません。変数名は、「DB_title」など、項目名に「DB_」をつけたものである必要があります。「#foreach」はネストすることができます。
最大数に正の値を指定すると、昇順に並び替えられた上で、先頭から最大数だけ繰り返されます。最大数に負の値を指定すると、降順に並び替えられた上で、先頭から最大数(のマイナスの値)だけ繰り返されます。
以下の例は、typeがPHPであるものを、dateの降順に並び替え、それぞれののtitleをすべて表示しています。同じdateがあるとまとめられてしまうので、「#foreach DB_id」とすることで全idを表示しています。 #set DB_type PHP #foreach DB_date -9999 * &DB_date; #foreach DB_id ** &DB_title; #end #end
genreでのみ使用可能です。行の途中に入れることはできません。
(#contents)>>&syntaxphp;
目次を作ります。ページ内の見出しが、箇条書きになって表示されます。
(#vr)>>&syntaxphp;
このコマンドより前の出力は左エリアに、このコマンドより後の出力は右エリアに出力されます。
lwg(light work group)で使用できるシステム変数について説明します。
システム変数は、変数名が大文字ではじまります。これらの変数を設定することで、標準とは異なる処理をおこなうことができます。
設定変数はenv.phpで設定します。env.phpの役割は、以下の通りです。 -公開用とプレビュー用とで同じデータを扱いたいときに、URLだけをenv.phpで変更できる -index.phpを変更しなくても設定が変えられるので、index.phpのバージョンアップが容易 -dl()などを利用して、sqliteなどのエクステンションを読み込むことができる
$systeminfo->variable["BASEURL"]
= "http://localhost/www/";
BASEURLは、lwgのスクリプトのあるURLを指定します。生成されるページのリンクは、このURLを基準に生成されます。
$systeminfo->variable["IMAGEPATH"]
= $systeminfo->variable["BASEURL"]."image/";
後述するタグ指定で、画像のURLを指定するのに用意されています。標準状態では特に使用されていません。
$systeminfo->variable["DEFAULTDATE"] = date("Y/m/d");
contentテーブルでレコードを追加したときに、dateの項目の初期値を指定します。dateを空欄にしたいときは、""と指定します。
変数ではありませんが、データベースのファイル名を指定します。以下の例では、「master.sq2」というファイル名になります。 $systeminfo->dbpath = "master.sq2";
データベースに書き込むには、ディレクトリの書き込み権限が必要になります。「db/master.sq2」のようにしてディレクトリの指定をすると、そのディレクトリのデータベースを使用します。これは、index.phpが公開用ディレクトリに、edit.phpがパスワードつきディレクトリにあるような場合に、それぞれのenv.phpで同じデータベースを指定するのに利用することもできます。
$encode->sethost("EUC-JP");
変数ではありませんが、文字コードを指定します。データベースに格納される文字コードもここで指定したものになりますので、変更するとデータベース上のデータが文字化けします。
「DB_<項目名>」の名前の変数は、データベース変数です。 [contentテーブル] の項目にアクセスすることができます。データベース変数の設定はgenreのbodyでおこないます。参照はgenre・contentの両方から可能です。 -DB_id -DB_genre -DB_title -DB_type -DB_version -DB_date -DB_par0 -DB_par1 -DB_par2 -DB_par3 -DB_lead -DB_body
これらの変数をどれか1つでも設定すると、自動的にcontentテーブルが検索され、見つかったレコードの項目が残りの変数として見えるようになります。複数の項目を設定すると、設定したすべての項目が一致するレコードが検索されます。
複数のレコードが検索された場合は、どれか1つが選択されます。 [#foreach] を使うと、レコードを順に取り出して、それぞれについて処理をおこなうことができます。
画面の定型文字列を設定します。genreのconfigで指定します。
ブラウザのタイトルバーに表示される文字を指定します。 #set TITLE php.pa-i.org
画面の最初の行に表示される文字列を指定します。 #sethtmlstart HEADER
#end画面の一番下の行に表示される文字列を指定します。これは自動的に右寄せになります。 #sethtmlstart FOOTER Copyright © π 2006&br; このページの内容は無保証です #end
検索ボタンに表示される文字列を指定します。 #set SEARCH 検索
メニューバーの左端・区切り・右端の文字を指定します。指定しない場合は、左端と右端は何も表示されず、区切りは「|」となります。 #set MENULEFT [ #set MENUSPACE | #set MENURIGHT ]
「FG_<エリア名>」「BG_<エリア名>」の名前の変数は、カラー変数です。FGは前景色で、指定がなかった場合は黒になります。BGは背景色で指定がなかった場合は白または灰色になります。
カラー変数は、genreのconfigで指定します。
画面上部のタイトルエリアの配色を設定します。
メニューバー・検索エリア・フッタの配色を指定します。
メニューバー・フッタの左端・右端の背景色を指定します。指定がなかった場合は、BG_MENUと同じになります。
サイドエリア(本文エリアの左側)の配色を指定します。
サイドエリアの左端・右端の背景色を指定します。指定がなかった場合は、BG_SIDEと同じになります。
本文エリアの配色を指定します。
本文エリアの左端・右端の背景色を指定します。指定がなかった場合は、BG_BODYと同じになります。
タグを書き換えたいときに使用します。「OP_<タグ名>」はタグが開くとき、「CL_<タグ名>」はタグが閉じるときに対応します。genreのconfigで指定します。
#sethtmlstart OP_H2━
#sethtml OP_BLOCKQUOTE
#sethtmlstart OP_TABLE
#end
#sethtml OP_TD
#sethtmlstart OP_TH
#end
#sethtml OP_UL
#sethtml OP_OL
特殊文字変数
よく使う特殊文字は、以下の変数にあらかじめ設定されています。
br
タグが登録されています。表の中で改行する場合などに使用します。
hr
タグが登録されています。区切り線を表示する場合に使用します。
tab
タブ文字が登録されています。整形済みテキストの中にタブを入れることができます。
null
ヌル文字列が登録されています。何も表示されませんが、例えば「 &null; 」のようにコマンドの中に入れると、コマンドが無効になりそのまま表示されます。同様に、行頭に入れると行コマンドが無効になり、そのまま表示されます。
その他
LINKEXTENSION
ページの末尾につける拡張子を指定します。指定がなかった場合は、「download/1/1」のようなURLになります。
#set LINKEXTENSION .html
なお、LINKEXTENSIONの設定は、トップページgenreのconfig内でおこなってください。
SEARCHDIGEST
検索結果を表示するときに、contentのダイジェストが格納される変数です。#searchkeyコマンド内で使用できます。
nodata
検索結果の末尾に表示されます。初期値は「Sorry, no content found.」ですので、#searchkeyコマンド内で「#set nodata &null;」としてクリアしてください。また、#foreach内でクリアして、各genreの末尾で表示することで、間違ったURLからアクセスされたときにもメッセージを表示することができます。
lwg (2006/10/31)
lwg(light work group)のgenre定義のサンプルデータを紹介します。
用途に合わせて、どのように設定すればよいかを説明します。
お知らせページ(news)
日付順にお知らせを表示するページです。一覧には見出しだけが表示され、選択すると全文が表示されます。
URL
ここで作るお知らせのURLは、「news」(またはnews.html)だと一覧が、「news/1」(またはnews/1.html)だとそのIDのお知らせが、それぞれ表示されるようになっています。
genreテーブル
[genreテーブル] では、以下のように設定します。
- key news
- tilte お知らせ
- pos 100
お知らせをメニューバーに表示したくない場合は、posを0に設定します。この場合でも、後述する方法でトップページなどから参照することができます。
- body
//====================================================
#geturl DB_genre
目次
#contents
#vr
- お知らせ一覧
#foreach DB_date -9999
#foreach DB_id
** &DB_title;
(&DB_date;) &DB_lead; [続きを読む]
#end
#end
//====================================================
#geturlid DB_id
[;お知らせの一覧を見る]
#set id &DB_id;
#set DB_id
#foreach DB_date -9999
#foreach DB_id
- [&DB_title;]
#end
#end
#set DB_id &id;
#vr
- &DB_title;
(&DB_date;) &DB_lead;
&DB_body;
//====================================================
#geturl
前半は一覧を表示します。「#foreach DB_date -9999」日付の降順に並び替えています。同じ日付が複数あったときのために「#foreach DB_id」でそれぞれのIDについて処理をおこなっています。
後半は個々の記事を表示します。少し複雑になっているのは、指定されたDB_idを保存しておき、DB_idをいったんクリアして全記事の一覧を作っているためです。
contentテーブル
[contentテーブル] では、以下の項目を設定します。
- genre news
- title お知らせのタイトル
- date 日付(2006/01/01など)
- show ON
- lead 見出し
- body 本文
最新のお知らせをトップページに表示する
トップページ(keyが空)のbodyに、以下のように記述すると、お知らせの最新の3日分のお知らせをトップページに表示することができます。サイドエリアは、よく使うリンクなどを入れるのに利用できます。
&br;
クイックリンク
(よく使うリンクを入れてください)
//==============================================
#vr
#set DB_genre news
#foreach DB_date -3
#foreach DB_id
** &DB_title;
&DB_lead;(&DB_date;)
[;続きを読む]
#end
#end
[&null;お知らせの一覧を見る]
&br;
「#set DB_genre news」で、お知らせのcontentを検索します。「#foreach DB_date -3」で、日付が新しいものから3件を順に取り出し、さらに「#foreach DB_id」で同じ日付が複数あったときにそれぞれを表示するようにします。
sqlite.so (2006/11/03)
SQLiteはPHPの権限で動作するため、パーミションに注意が必要です。レンタルサーバなど、他人と共用しているサーバで使用する場合、パーミションに特に注意してください。
通常のパーミション
PHPは通常はApacheのモジュールとして動作します。この場合はApacheとPHPが一体化し、Apacheの延長線上でPHPが動作するため、ApacheからPHPへの切り替えが起こりません。レンタルサーバのように非常に多くのアクセスを処理する環境では、切り替えがないことによる高速性が重宝されています。
Apacheは全ユーザーから共用されていますので、ホームページのファイルは誰でも読み込みができるように設定します。この設定をパーミション(permission)と呼びます。もし他人からの読み込みを禁止していると、Apacheもホームページのファイルを読み込めないため、「403 Access Forbidden」のエラーが表示されます。Apacheはホームページのファイルに書き込む必要はないため、他人からの書き込みは通常は禁止します。
|パーミション|>|>|owner/自分|>|>|Apache/他人|
||r/読|w/書|x/実行・サーチ|r/読|w/書|x/実行・サーチ|
|ディレクトリ|許可|許可|許可|(許可)|−|許可|
|HTMLファイル|許可|許可|−|許可|−|−|
|PHPファイル|許可|許可|−|許可|−|−|
|PHPから読み&br;込むファイル&br;(SQLite)|許可|許可|−|許可|−|−|
|読み込めない&br;ファイル|許可|許可|−|−|−|−|
SQLiteを使う場合
SQLiteはファイルによるデータベースですので、スクリプトの処理によってデータベースファイルに書き込みが発生します。しかし、書き込みはApacheの延長線上のPHPがおこなうため、データベースファイルに対して他人からの書き込み許可がないと、「attempt to write a readonly database」のエラーになります。書き込み時にテンポラリーファイルを作る関係で、ディレクトリにも書き込み権限が必要です。これは他人が作ったスクリプトからも自分のデータベースに書き込みができることになり、セキュリティ的に望ましくありません。
|危険な&br;パーミション|>|>|owner/自分|>|>|Apache/他人|
||r/読|w/書|x/実行・サーチ|r/読|w/書|x/実行・サーチ|
|PHPからファ&br;イルを作る&br;ディレクトリ|許可|許可|許可|許可|許可|許可|
|PHPから書き&br;込むファイル|許可|許可|−|許可|許可|−|
[lwg] において、自分のPCで作成したデータベースをサーバにコピーして使う分には、サーバでの書き込みは発生しないので、データベースファイルを他人から書き込み禁止に設定すればOKです。
しかしデータベースファイルに書き込む場合は、PHPをApacheの延長線上で動かして他人としてアクセスするのではなく、Apacheからsuexecという手法でCGI版のPHPを動かす必要があります。こうすると、PHPは自分の権限でファイルにアクセスすることができます。
|パーミション|>|>|owner/自分|>|>|Apache/他人|
||r/読|w/書|x/実行・サーチ|r/読|w/書|x/実行・サーチ|
|ディレクトリ|許可|許可|許可|−|−|許可|
|CGIファイル|許可|許可|許可|−|−|−|
|データベース|許可|許可|−|−|−|−|
この方法は、データベースファイルを他人から読み込み禁止にすることができるため、重要なデータが入っているデータベースファイルを扱う場合にも有効です。
データベースに書き込む場合の設定
ApacheからsuexecでCGI版のPHPを起動するには、いくつかの方法があります。一般的な方法を説明しますが、詳細はレンタルサーバの提供元にお問い合わせください。
- PHPファイルの存在するディレクトリを、他人から書き込み不可にします。たとえば「chmod 701 .」を実行します。
- PHPファイルの拡張子を「.cgi」にします。たとえば「index.php」を「index.cgi」にします。 [lwg] の場合は、ファイルの2行目に書いてあるファイル名も、同様に変更します。
- PHPファイルの最初の行に「#! /usr/bin/php」という行を追加します。
- PHPファイルのパーミションを、実行可能にします。たとえば「chmod 700 index.cgi」を実行します。
このようにすると、index.cgiはPHPで実行されますが、Apacheの権限ではなく、自分と同じ権限で動作します。したがって、他人から読み書きできないように設定してあるファイルもアクセスできるようになります。
lwg (2006/11/03)
#contentsコマンドで、&body;の中の見出しが目次に出ないという問題があります。
070407版で修正されました。
php (2006/11/27)
1台のマシンで、PHP4とPHP5の両方の環境をテストするには、include()を使うのが便利です。
異なるバージョンのPHPをインストールしている場合(PHP4がモジュール、PHP5がCGIなど)、以下のような方法で、拡張子によるバージョンの切り替えが可能です。スクリプトの実体は1つなので、修正しながらテストするのが簡単になります。
httpd.confを使う方法
test.phpがPHP4で起動するようになっている場合、Apacheのhttpd.confに以下の設定をします。環境によっては、.htaccessで設定できるかも知れません。
AddType application/x-httpd-php .php
LoadModule php4_module "c:/php/php4apache.dll"
ScriptAlias /php5/ "c:/php5/"
AddType application/x-httpd-php5 .php5
# For PHP 5
Action application/x-httpd-php5 "/php5/php-cgi.exe"
# specify the directory where php.ini is
SetEnv PHPRC C:/php5
次に、例えばindex.phpがある場合、以下のようなindex.php5を用意します。
これで、index.php5はPHP5で起動され、index.phpが読み込まれて動作します。
.cgiを使う方法
例えばindex.phpがある場合、以下のようなindex.cgiを用意します。
#! /usr/local/lib/php5/php-cgi
このCGIは実行可能にしておきます(例: chmod 701 index.cgi)。
これで、index.cgiはPHP5で起動され、index.phpが読み込まれて動作します。
注意
- index.php5などのファイルの末尾に空行を入れないように注意してください
- ディレクトリを変更する場合は、chdir()も必要です
lwg (2007/04/10)
#subdirectoryコマンドは古いコマンドです。
互換性のため、#subdirectoryコマンドも利用できるようになっていますが、070407版以降では#geturlを使用してください。
旧コマンド
新コマンド
#subdirectory
#geturl
#subdirectoryid
#geturlid
詳細は [genreコマンドの解説] をご覧ください。
lwg (2006/10/29)
lwg(light work group)のインストール方法について説明します。
ファイルの説明
lwgは、PHPスクリプトを使い、SQLiteデータベースから動的にコンテンツを生成しています。以下のファイルがあります。
- env.php : 設定用ファイル
- index.php : 表示用スクリプト
- edit.php : 編集用スクリプト
- master.sq2 : データベースファイル
env.phpは設定用ファイルです。テキストエディタで開き、URLなどをインストール先の環境に合わせて設定してください。設定方法は後述します。
index.phpは表示用スクリプトです。index.phpをブラウザで開くことで、コンテンツを表示することができます。このURLを公開することになりますが、例えば「http://php.pa-i.org/index.php」としなくても「http://php.pa-i.org/」で表示できる設定になっていることが多いようです。
edit.phpは編集用スクリプトです。edit.phpをブラウザで開くことで、コンテンツを編集することができます。コンテンツは [genreテーブル] と [contentテーブル] に分けて格納され、contentテーブルは個々の記事を、genreテーブルは表示の仕方を保持します。
master.sq2はデータベースファイルです。すべてのコンテンツはデータベースファイルに格納されますので、このファイルをバックアップしたり、コピーしたりすることで、サーバのコンテンツを一括更新することができます。
env.phpの例
行頭に「#」がある行はコメントです(PHPスクリプトなので「#」から後はコメントになります)。はじめから「#」がある行は、「#」を削除することで有効になります。また、行を削除しないで無効にしたいときは「#」を追加します。
<?php
# dl("../sqlite.so"); # for dynamic loading
sqlite.soを動的にロードする場合は、行頭の「#」を削除して、パスを適切に設定してください。
# $systeminfo =& new debugsysteminfo(); # enable debug information in HTML-comment
行頭の「#」を取り除くとデバッグモードになります。コンテンツの解析結果が、HTML中にコメントとして出力されるようになりますので、うまく表示されないときに原因を調べることができます。
$systeminfo->variable["welcomemessage"] = <<<EOO
This is local version.
EOO;
# variables setting
ここで設定した内容は、コンテンツから変数として取り出すことができます。例えばテスト用サイトと公開用サイトとがあり、データベースファイルを共通にする場合に、テスト用サイトのenv.phpで変数を設定しておけば、テスト用サイトと公開用サイトとで異なる表示をおこなうことができます。
$systeminfo->dbpath = "master.sq2"; # "master.sq2" means "./master.sq2"
データベースファイルのパスを指定してください。
$systeminfo->variable["BASEURL"] = "http://localhost/pai_org/php/";
# where "index.php" exists
index.phpを開くためのURLを指定してください。
$systeminfo->variable["IMAGEURL"] = $systeminfo->variable["BASEURL"]."image/";
使用していませんが、このように変数にURLを設定するようにすれば、複数のサイトで画像のURLが異なる場合でも、共通のデータベースファイルにすることができます。
$systeminfo->variable["DEFAULTDATE"] = date("Y/m/d");
# default date field in edit.php
edit.phpでcontentレコードを新規作成したときに、dateフィールドにディフォールトで入力される値を設定できます。dateはPHPの関数で、Yやmやdはそのときの日付に置き換わります。
$encode->sethost("EUC-JP"); # encoding
エンコードを指定します。この設定でデータベースに格納されるので、途中で変更することはできません。
die('
please setup "env.php" file.
'); # delete this line after setup.
設定ができたらこの行を削除するか、コメントにしてください。
?>
この後に空行を入れると、ページを表示したときに「Warning: Cannot modify header information - headers already sent by ...」のようなメッセージが表示されますので注意してください。
作業用の設定
手元のPCなどでコンテンツを作る場合、以下のすべてのファイルを同じディレクトリに置いてください。env.phpを適切に設定したあと、edit.phpをブラウザで開くことでコンテンツの編集ができます。表示を確認するにはindex.phpをブラウザで開いてください。
- env.php
- index.php
- edit.php
- master.sq2
公開用の設定
edit.phpを誰かがアクセスすると、コンテンツを書き換えられてしまいます。そこで、edit.phpを除いた以下のファイルを同じディレクトリに置いてください。env.phpを適切に編集した後、index.phpをブラウザで開くことでコンテンツが表示されます。
- env.php
- index.php
- master.sq2
通常は、手元のPCなどで作ったmaster.sq2を、ftpやscpを使って公開ディレクトリに転送することで、コンテンツを公開できます。このとき、古いmaster.sq2を取っておくようにすれば、何か問題があった場合にもすぐに古いバージョンに戻すことができます。
データベースファイルの新規作成
配布パッケージには、http://php.pa-i.org/のデータベースファイルが入っています。完全に空のデータベースファイルで始めたい場合は、master.sq2を削除かリネームし、edit.phpをブラウザで開いて「manage database」の「create tables」を選択すると、新しいmaster.sq2が作成されます。
php (2009/12/06)
SHARPのLinuxマシンNetWalkerに、phpをインストールする方法を解説します。
NetWalkerは、ARMプロセッサを搭載したLinuxマシンです。x86とバイナリ互換がないのですが、多くのLinuxアプリケーションはソースが提供されているため、自分でビルドしてインストールすることができます。ここでは、phpのインストール方法を解説します。
120108追記: 無線LANがオフのとき、Firefoxがオフラインモードになってしまう問題は、「about:config」で「toolkit.networkmanager.disable」をtrueにすると解消されます。その他のNetWalker情報は、 http://pda.pa-i.org/index.php/nw.html をご覧ください。
注意点
- シェルの使い方やApacheの設定など、ある程度の知識がある前提で書いています。ご了承ください。
- 基本的に、自己責任でお願いします。
- ビルドは時間がかかりますので、電池が十分にある状態でおこなってください。
- 詳しくは調べていないのですが、無線LANなどから内部にアクセスされるかも知れません。127.0.0.1以外からのアクセスを遮断するなど、対策を取って下さい。
Apache
- ダウンロード用のディレクトリを用意します。ここでは、~/download/としておきます。
cd
mkdir download
cd download
- ブラウザでApache 2.0をダウンロードします。保存先は、さきほどのダウンロードディレクトリにします。
- 展開・ビルド・インストールします。
tar xfj httpd-2.0.63.tar.bz2
cd httpd-2.0.63/
./configure
make
sudo make install
- Apacheを起動します。Apacheの起動は、システムを再起動するごとにおこなう必要があります。
sudo /usr/local/apache2/bin/apachectl -k start
- ブラウザで、 http://127.0.0.1/ にアクセスして、ページが表示されることを確認します。
各種ライブラリのインストール
phpなどのインストールには、ライブラリが必要です。これらをインストールします。
sudo apt-get install libjpeg-dev libpng-dev
sudo apt-get install libgd2-xpm-dev
openssl
phpから外部のwebサーバにアクセスするのに、opensslがあるとhttps接続ができます。
- ブラウザでダウンロードします。
- 展開し、ビルド・インストールします。
cd ~/download/
tar xfz openssl-0.9.8l.tar.gz
cd openssl-0.9.8l
./config
make
sudo make install
curl
phpから外部のwebサーバに対して、フォームのPOSTなどができるようになります。
- ブラウザでダウンロードします。
- 展開し、ビルド・インストールします。
cd ~/download/
tar xfz curl-7.19.7.tar.gz
cd curl-7.19.7/
env PKG_CONFIG_PATH=/usr/local/ssl/lib/pkgconfig (改行せず次の行に続く)
./configure --enable-httpd --enable-ftp --with-ssl
make
sudo make install
php
いよいよphpです。
- ブラウザでダウンロードします。
- 展開し、ビルド・インストールします。
cd ~/download
tar xfz php-5.2.10.tar.gz
cd php-5.2.10
./configure --with-apxs2=/usr/local/apache2/bin/apxs (改行せず次の行に続く)
--with-openssl --with-zlib --with-curl --with-gd (改行せず次の行に続く)
--with-jpeg-dir --with-png-dir --with-freetype-dir (改行せず次の行に続く)
--enable-mbstring --without-pear --disable-libxml (改行せず次の行に続く)
--disable-simplexml --disable-xml --disable-xmlwriter (改行せず次の行に続く)
--disable-xmlreader --disable-dom (改行せず次の行に続く)
--with-openssl-dir=/usr/local/ssl
make
sudo make install
sudo cp php.ini-dist /usr/local/lib/php.ini
httpd.confの設定
httpd.confを修正してApacheからphpを起動できるようにします。ついでに、DocumentRootを/var/wwwなどにしておくとよいでしょう。
cd /usr/local/apache2/conf
sudo nano httpd.conf
- 以下の行を変更します。
DocumentRoot "/usr/local/apache2/htdocs"
↓
DocumentRoot "/var/www"
- 以下の行を、cgi-scriptとある行の直後に追加します。
LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php
- /var/wwwを作成します。最後のUSERの部分は、あなたのログイン名にしてください。
sudo mkdir /var/www
sudo chmod g+ws /var/www
sudo chgrp USER /var/www
動作確認
- Apacheを再起動します。
/usr/local/apache2/bin/apachectl -k restart
- phpinfo.phpを作成します。
echo '' >/var/www/phpinfo.php
- ブラウザで、 http://127.0.0.1/phpinfo.php にアクセスし、正しく表示されることを確認します。
その他
- このままだと、Apacheはnobody権限で動作します。このため、lwgのようにApacheやphpからファイルに書き込む場合、o+w権限を与える必要があります。NetWalkerの場合、ユーザーは1人しかいないケースが多いと思いますので問題になることは考えにくいのですが、apacheというユーザーを作り、/var/wwwはapacheグループの所有にしておくと、より望ましいと思います。
- /etc/hostsを見ると、localhostではなくユーザー名が127.0.01(ループバックアドレス)に設定されています。localhostも127.0.0.1を割り当てておくとよいでしょう。
pukiwiki (2009/12/11)
pukiwikiのサイトに、blockdiagramやsyntaxdiagramを使うための改造メモを書きました。
pukiwikiをご利用の方は数行の修正で、 [vtext.php] や [syntaxdiagram.php] や [blockdiagram.php] をwiki中に直接表示できるようになります。以下をご覧ください。
- http://pukiwiki.sourceforge.jp/dev/?BugTrack2%2F328 interwikiで画像cgiを埋め込むhack
注意点として、最後が「]」で終わる場合は、以下のように半角スペースを入れてください。
[&null;[diagram:[スタート]E[ゴール] ]]
#sethtmlstart OP_TH |
#end
#sethtml OP_UL
特殊文字変数よく使う特殊文字は、以下の変数にあらかじめ設定されています。 br
hrタグが登録されています。区切り線を表示する場合に使用します。 tabタブ文字が登録されています。整形済みテキストの中にタブを入れることができます。 nullヌル文字列が登録されています。何も表示されませんが、例えば「 &null; 」のようにコマンドの中に入れると、コマンドが無効になりそのまま表示されます。同様に、行頭に入れると行コマンドが無効になり、そのまま表示されます。 その他LINKEXTENSIONページの末尾につける拡張子を指定します。指定がなかった場合は、「download/1/1」のようなURLになります。 #set LINKEXTENSION .html なお、LINKEXTENSIONの設定は、トップページgenreのconfig内でおこなってください。 SEARCHDIGEST検索結果を表示するときに、contentのダイジェストが格納される変数です。#searchkeyコマンド内で使用できます。 nodata検索結果の末尾に表示されます。初期値は「Sorry, no content found.」ですので、#searchkeyコマンド内で「#set nodata &null;」としてクリアしてください。また、#foreach内でクリアして、各genreの末尾で表示することで、間違ったURLからアクセスされたときにもメッセージを表示することができます。 lwg (2006/10/31)lwg(light work group)のgenre定義のサンプルデータを紹介します。 用途に合わせて、どのように設定すればよいかを説明します。 お知らせページ(news)日付順にお知らせを表示するページです。一覧には見出しだけが表示され、選択すると全文が表示されます。 URLここで作るお知らせのURLは、「news」(またはnews.html)だと一覧が、「news/1」(またはnews/1.html)だとそのIDのお知らせが、それぞれ表示されるようになっています。 genreテーブル[genreテーブル] では、以下のように設定します。 お知らせをメニューバーに表示したくない場合は、posを0に設定します。この場合でも、後述する方法でトップページなどから参照することができます。 前半は一覧を表示します。「#foreach DB_date -9999」日付の降順に並び替えています。同じ日付が複数あったときのために「#foreach DB_id」でそれぞれのIDについて処理をおこなっています。 後半は個々の記事を表示します。少し複雑になっているのは、指定されたDB_idを保存しておき、DB_idをいったんクリアして全記事の一覧を作っているためです。 contentテーブル[contentテーブル] では、以下の項目を設定します。 最新のお知らせをトップページに表示するトップページ(keyが空)のbodyに、以下のように記述すると、お知らせの最新の3日分のお知らせをトップページに表示することができます。サイドエリアは、よく使うリンクなどを入れるのに利用できます。 &br; クイックリンク (よく使うリンクを入れてください) //============================================== #vr #set DB_genre news #foreach DB_date -3 #foreach DB_id ** &DB_title; &DB_lead;(&DB_date;) [;続きを読む] #end #end [&null;お知らせの一覧を見る] &br; 「#set DB_genre news」で、お知らせのcontentを検索します。「#foreach DB_date -3」で、日付が新しいものから3件を順に取り出し、さらに「#foreach DB_id」で同じ日付が複数あったときにそれぞれを表示するようにします。 sqlite.so (2006/11/03)SQLiteはPHPの権限で動作するため、パーミションに注意が必要です。レンタルサーバなど、他人と共用しているサーバで使用する場合、パーミションに特に注意してください。 通常のパーミションPHPは通常はApacheのモジュールとして動作します。この場合はApacheとPHPが一体化し、Apacheの延長線上でPHPが動作するため、ApacheからPHPへの切り替えが起こりません。レンタルサーバのように非常に多くのアクセスを処理する環境では、切り替えがないことによる高速性が重宝されています。 Apacheは全ユーザーから共用されていますので、ホームページのファイルは誰でも読み込みができるように設定します。この設定をパーミション(permission)と呼びます。もし他人からの読み込みを禁止していると、Apacheもホームページのファイルを読み込めないため、「403 Access Forbidden」のエラーが表示されます。Apacheはホームページのファイルに書き込む必要はないため、他人からの書き込みは通常は禁止します。 |パーミション|>|>|owner/自分|>|>|Apache/他人| ||r/読|w/書|x/実行・サーチ|r/読|w/書|x/実行・サーチ| |ディレクトリ|許可|許可|許可|(許可)|−|許可| |HTMLファイル|許可|許可|−|許可|−|−| |PHPファイル|許可|許可|−|許可|−|−| |PHPから読み&br;込むファイル&br;(SQLite)|許可|許可|−|許可|−|−| |読み込めない&br;ファイル|許可|許可|−|−|−|−| SQLiteを使う場合SQLiteはファイルによるデータベースですので、スクリプトの処理によってデータベースファイルに書き込みが発生します。しかし、書き込みはApacheの延長線上のPHPがおこなうため、データベースファイルに対して他人からの書き込み許可がないと、「attempt to write a readonly database」のエラーになります。書き込み時にテンポラリーファイルを作る関係で、ディレクトリにも書き込み権限が必要です。これは他人が作ったスクリプトからも自分のデータベースに書き込みができることになり、セキュリティ的に望ましくありません。 |危険な&br;パーミション|>|>|owner/自分|>|>|Apache/他人| ||r/読|w/書|x/実行・サーチ|r/読|w/書|x/実行・サーチ| |PHPからファ&br;イルを作る&br;ディレクトリ|許可|許可|許可|許可|許可|許可| |PHPから書き&br;込むファイル|許可|許可|−|許可|許可|−| [lwg] において、自分のPCで作成したデータベースをサーバにコピーして使う分には、サーバでの書き込みは発生しないので、データベースファイルを他人から書き込み禁止に設定すればOKです。 しかしデータベースファイルに書き込む場合は、PHPをApacheの延長線上で動かして他人としてアクセスするのではなく、Apacheからsuexecという手法でCGI版のPHPを動かす必要があります。こうすると、PHPは自分の権限でファイルにアクセスすることができます。 |パーミション|>|>|owner/自分|>|>|Apache/他人| ||r/読|w/書|x/実行・サーチ|r/読|w/書|x/実行・サーチ| |ディレクトリ|許可|許可|許可|−|−|許可| |CGIファイル|許可|許可|許可|−|−|−| |データベース|許可|許可|−|−|−|−| この方法は、データベースファイルを他人から読み込み禁止にすることができるため、重要なデータが入っているデータベースファイルを扱う場合にも有効です。 データベースに書き込む場合の設定ApacheからsuexecでCGI版のPHPを起動するには、いくつかの方法があります。一般的な方法を説明しますが、詳細はレンタルサーバの提供元にお問い合わせください。 このようにすると、index.cgiはPHPで実行されますが、Apacheの権限ではなく、自分と同じ権限で動作します。したがって、他人から読み書きできないように設定してあるファイルもアクセスできるようになります。 lwg (2006/11/03)#contentsコマンドで、&body;の中の見出しが目次に出ないという問題があります。 070407版で修正されました。 php (2006/11/27)1台のマシンで、PHP4とPHP5の両方の環境をテストするには、include()を使うのが便利です。 異なるバージョンのPHPをインストールしている場合(PHP4がモジュール、PHP5がCGIなど)、以下のような方法で、拡張子によるバージョンの切り替えが可能です。スクリプトの実体は1つなので、修正しながらテストするのが簡単になります。 httpd.confを使う方法test.phpがPHP4で起動するようになっている場合、Apacheのhttpd.confに以下の設定をします。環境によっては、.htaccessで設定できるかも知れません。 AddType application/x-httpd-php .php LoadModule php4_module "c:/php/php4apache.dll" ScriptAlias /php5/ "c:/php5/" AddType application/x-httpd-php5 .php5 # For PHP 5 Action application/x-httpd-php5 "/php5/php-cgi.exe" # specify the directory where php.ini is SetEnv PHPRC C:/php5 次に、例えばindex.phpがある場合、以下のようなindex.php5を用意します。 これで、index.php5はPHP5で起動され、index.phpが読み込まれて動作します。 .cgiを使う方法例えばindex.phpがある場合、以下のようなindex.cgiを用意します。 #! /usr/local/lib/php5/php-cgi このCGIは実行可能にしておきます(例: chmod 701 index.cgi)。 これで、index.cgiはPHP5で起動され、index.phpが読み込まれて動作します。 注意lwg (2007/04/10)#subdirectoryコマンドは古いコマンドです。 互換性のため、#subdirectoryコマンドも利用できるようになっていますが、070407版以降では#geturlを使用してください。
詳細は [genreコマンドの解説] をご覧ください。 lwg (2006/10/29)lwg(light work group)のインストール方法について説明します。 ファイルの説明lwgは、PHPスクリプトを使い、SQLiteデータベースから動的にコンテンツを生成しています。以下のファイルがあります。 env.phpは設定用ファイルです。テキストエディタで開き、URLなどをインストール先の環境に合わせて設定してください。設定方法は後述します。 index.phpは表示用スクリプトです。index.phpをブラウザで開くことで、コンテンツを表示することができます。このURLを公開することになりますが、例えば「http://php.pa-i.org/index.php」としなくても「http://php.pa-i.org/」で表示できる設定になっていることが多いようです。 edit.phpは編集用スクリプトです。edit.phpをブラウザで開くことで、コンテンツを編集することができます。コンテンツは [genreテーブル] と [contentテーブル] に分けて格納され、contentテーブルは個々の記事を、genreテーブルは表示の仕方を保持します。 master.sq2はデータベースファイルです。すべてのコンテンツはデータベースファイルに格納されますので、このファイルをバックアップしたり、コピーしたりすることで、サーバのコンテンツを一括更新することができます。 env.phpの例行頭に「#」がある行はコメントです(PHPスクリプトなので「#」から後はコメントになります)。はじめから「#」がある行は、「#」を削除することで有効になります。また、行を削除しないで無効にしたいときは「#」を追加します。 <?php # dl("../sqlite.so"); # for dynamic loading sqlite.soを動的にロードする場合は、行頭の「#」を削除して、パスを適切に設定してください。 # $systeminfo =& new debugsysteminfo(); # enable debug information in HTML-comment 行頭の「#」を取り除くとデバッグモードになります。コンテンツの解析結果が、HTML中にコメントとして出力されるようになりますので、うまく表示されないときに原因を調べることができます。 $systeminfo->variable["welcomemessage"] = <<<EOO This is local version. EOO; # variables setting ここで設定した内容は、コンテンツから変数として取り出すことができます。例えばテスト用サイトと公開用サイトとがあり、データベースファイルを共通にする場合に、テスト用サイトのenv.phpで変数を設定しておけば、テスト用サイトと公開用サイトとで異なる表示をおこなうことができます。 $systeminfo->dbpath = "master.sq2"; # "master.sq2" means "./master.sq2" データベースファイルのパスを指定してください。 $systeminfo->variable["BASEURL"] = "http://localhost/pai_org/php/"; # where "index.php" exists index.phpを開くためのURLを指定してください。 $systeminfo->variable["IMAGEURL"] = $systeminfo->variable["BASEURL"]."image/"; 使用していませんが、このように変数にURLを設定するようにすれば、複数のサイトで画像のURLが異なる場合でも、共通のデータベースファイルにすることができます。 $systeminfo->variable["DEFAULTDATE"] = date("Y/m/d"); # default date field in edit.php edit.phpでcontentレコードを新規作成したときに、dateフィールドにディフォールトで入力される値を設定できます。dateはPHPの関数で、Yやmやdはそのときの日付に置き換わります。 $encode->sethost("EUC-JP"); # encoding エンコードを指定します。この設定でデータベースに格納されるので、途中で変更することはできません。 die(' please setup "env.php" file.'); # delete this line after setup.設定ができたらこの行を削除するか、コメントにしてください。 ?> この後に空行を入れると、ページを表示したときに「Warning: Cannot modify header information - headers already sent by ...」のようなメッセージが表示されますので注意してください。 作業用の設定手元のPCなどでコンテンツを作る場合、以下のすべてのファイルを同じディレクトリに置いてください。env.phpを適切に設定したあと、edit.phpをブラウザで開くことでコンテンツの編集ができます。表示を確認するにはindex.phpをブラウザで開いてください。 公開用の設定edit.phpを誰かがアクセスすると、コンテンツを書き換えられてしまいます。そこで、edit.phpを除いた以下のファイルを同じディレクトリに置いてください。env.phpを適切に編集した後、index.phpをブラウザで開くことでコンテンツが表示されます。 通常は、手元のPCなどで作ったmaster.sq2を、ftpやscpを使って公開ディレクトリに転送することで、コンテンツを公開できます。このとき、古いmaster.sq2を取っておくようにすれば、何か問題があった場合にもすぐに古いバージョンに戻すことができます。 データベースファイルの新規作成配布パッケージには、http://php.pa-i.org/のデータベースファイルが入っています。完全に空のデータベースファイルで始めたい場合は、master.sq2を削除かリネームし、edit.phpをブラウザで開いて「manage database」の「create tables」を選択すると、新しいmaster.sq2が作成されます。 php (2009/12/06)SHARPのLinuxマシンNetWalkerに、phpをインストールする方法を解説します。 NetWalkerは、ARMプロセッサを搭載したLinuxマシンです。x86とバイナリ互換がないのですが、多くのLinuxアプリケーションはソースが提供されているため、自分でビルドしてインストールすることができます。ここでは、phpのインストール方法を解説します。
注意点Apache各種ライブラリのインストールphpなどのインストールには、ライブラリが必要です。これらをインストールします。 sudo apt-get install libjpeg-dev libpng-dev sudo apt-get install libgd2-xpm-dev opensslphpから外部のwebサーバにアクセスするのに、opensslがあるとhttps接続ができます。 curlphpから外部のwebサーバに対して、フォームのPOSTなどができるようになります。 phpいよいよphpです。 httpd.confの設定httpd.confを修正してApacheからphpを起動できるようにします。ついでに、DocumentRootを/var/wwwなどにしておくとよいでしょう。 cd /usr/local/apache2/conf sudo nano httpd.conf ↓ DocumentRoot "/var/www" 動作確認その他pukiwiki (2009/12/11)pukiwikiのサイトに、blockdiagramやsyntaxdiagramを使うための改造メモを書きました。 pukiwikiをご利用の方は数行の修正で、 [vtext.php] や [syntaxdiagram.php] や [blockdiagram.php] をwiki中に直接表示できるようになります。以下をご覧ください。 注意点として、最後が「]」で終わる場合は、以下のように半角スペースを入れてください。 [&null;[diagram:[スタート]E[ゴール] ]] |
---|