PukiWiki

更新日 2010-05-19 (水) 21:35:27

apache2.0.x,openssl,php5.xをインストールを行ったのちPukiWikiをインストール ここからpukiwiki-1.4.7.tar.gzを Download。

インストール

$ tar zxvf pukiwiki-1.4.7.tar.gz

展開したフォルダをwebがアクセスできるところに配置して pukiwikiの解凍ディレクトリにあるINSTALL.txtを参考に各ファイルの属性を変更し、pukiwiki.ini.phpを編集する

PHP5.x(pukiwiki-1.4.4)ではこのバージョンでは以下のようなエラーが出るので

Fatal error: Cannot re-assign $this in /usr/local/apache2052/htdocs/pukiwiki144/lib/convert_html.php on line 108

lib/convert_html.phpを以下のように変更する。

108行

//edit by ISM           $this = new Paragraph(' '.substr($text,1));
                        $this->class = new Paragraph(' '.substr($text,1));

357行

//edit by ISM           $this = new Inline($text);
                        $this->class = new Inline($text);

557行

//edit by ISM           $this = new Inline($text);
                        $this->class = new Inline($text);

679行

//edit by ISM           $this = new Inline($text);
                        $this->class = new Inline($text);

789行

//edit by ISM           $this = new Paragraph($text);
                        $this->class = new Paragraph($text);

カスタマイズ

pukiwiki.ini.phpにはトップページに関する変更ができる

$page_title = 'ISM Memo';
$modifier = 'JE2ISM';
$modifierlink = 'http://uso5001.mie-chukyo-u.ac.jp/';
$defaultpage  = 'ISM Memo';     // トップページ (ページを指定しないとき)
$whatsnew     = '更新履歴';
$whatsdeleted = '削除履歴';

を変更した

topのアイコンはskin/pukiwiki.skin.ja.phpの

<a href="<?php echo $modifierlink ?>"><img id="logo" src="<?php echo IMAGE_DIR ?>
b_cut007.gif" width="60" height="60" alt="[PukiWiki]" title="[PukiWiki]" /></a>

にb_cut007.gifを指定すればよい。

アクセス制御

pukiwiki.ini.phpの以下を編集する。パスワードmd5を利用したほうが良い。 クリアテキストでも動作する。Basic認証で認証が行われる。 よって.htaccessでdigest認証と併用するこが出来ない。.htaccessを削除しておく。 このときパスワードでMD5ハッシュをしようするので以下のようにパスワードを暗号化する。

MD5ハッシュは

$ echo -n 'xxxx' | md5sum
a906449***69fa73xxx7ecc****f6d28  -

バックアップの削除等にパスワードが必要にする

// Admin password for this Wikisite
$adminpass = '{x-php-md5}a906449***69fa73xxx7ecc****f6d28';

こんな表現もあり

$adminpass = '{x-php-md5}'.md5("xxxx");

新規作成・編集のパスワード

許可範囲をページ単位かコンテンツ単位かを選択。ページ単位を指定。

// Authentication method
$auth_method_type       = 'pagename';   // By Page name
//$auth_method_type     = 'contents';   // By Page contents

以下の場所にユーザを定義する

// User definition
$auth_users = array(
// Username => password
//      'foo'   => 'foo_passwd', // Cleartext
//      'bar'   => '{x-php-md5}f53ae779077e987718cc285b14dfbe86', // PHP md5 () '
bar_passwd'
//      'hoge'  => '{SMD5}OzJo/boHwM4q5R+g7LCOx2xGMkFKRVEx',      // LDAP  SMD5 '
hoge_passwd'
	'admin' => '{x-php-md5}a906449***69fa73xxx7ecc****f6d28',
	'okada'  => '******',
	'user'  => '******',
);	

こんな表現もあり

     'user' = '{x-php-md5}'.md5("xxxx"),

編集の許可性をEnableにする($read_authでは閲覧制御も可)

// Edit auth (0:Disable, 1:Enable)
//$edit_auth = 0;
$edit_auth = 1;

編集ユーザをページごとに定義する。ページ指定は正規表現で可

すべてページがadminに作成・編集が可、okada,userはTESTで始まるページのみ作成・編集が可。

$edit_auth_pages = array(
       // Regex                   Username
       //'#BarDiary#'          => 'bar',
       //'#HogeHoge#'          => 'hoge',
       //'#(NETABARE|NetaBare)#'       => 'foo,bar,hoge',
       '/.*/'                  => 'admin',   <--すべてのページ
       '/^TEST/'                => 'okada,user',  <--"TEST"で始まるページ
);

画面設定のいろいろ

表の左寄せ

skin/pukiwiki.css.php

.style_table {
        padding:0px;
        border:0px;
//      margin:auto;     <==ここを修正
//      margin:left;
        margin:0px 0px 0px 20px;
        text-align:left;
        color:inherit;
        background-color:#ccd5dd;
}

IE5,6に対応するため

// div.ie5 { text-align:center; }
div.ie5 { text-align:left; }

メイン画面

色などの設定

skin/pukiwiki.css.php

body,td {
        color:black;
/*      background-color:white; */
        background-color:#E5FFE5;

bodyとtdを分け、tdに

background-image:url("http://wwwism.dyndns.org/image/blegtext3.gif");

とすると右側の本文のバックグランドのイメージだけが変更されるがtdタグすべてに適用されるので注意する。

a:link {
<?php   if ($media == 'print') { ?>
        text-decoration: underline;
<?php   } else { ?>
/*      color:#215dc6;*/
        color:#000000;
a:active {
/*      color:#215dc6;*/
        background-color:#CCDDEE;

水平線に画像を入れる

h2 {
        text-align: center;
        font-family:verdana, arial, helvetica, Sans-Serif;
/*      color:inherit; */
/*      background-color:#DDEEFF;
        background-color:#007FFF; */
        background-image: url("https://wwwism.dyndns.org/h1.jpg");

水平線をモディファイ

h3 {
        font-family:verdana, arial, helvetica, Sans-Serif;
/*      border-bottom:  3px solid #DDEEFF;
        border-top:     1px solid #DDEEFF;
        border-left:   10px solid #DDEEFF;
        border-right:   5px solid #DDEEFF;
        color:inherit;
        background-color:#FFFFFF;
        padding:.3em;
        margin:0px 0px .5em 0px;*/

  font-size: large;
  margin: 1em 0em 0em 0em;
  padding: 0.2em 0.5em;
  border-style: solid;
  border-width: 0px 0px 4px 20px;
  border-left-color: #FF9900;
  border-bottom-color: #9900FF;
}

サイドメニュー

MenuBarというページで編集ができる。新規->「MenuBar」と入力するこで編集ページが出る。

また、サイドメニューの色はpukiwiki.skin.php

<table border="0" style="width:100%">
 <tr>
  <td class="menubar" style="background:#ffdcff"> <---ここに指定
   <div id="menubar"><?php echo do_plugin_convert('menu') ?></div>

サイドメニューの幅はpukiwiki.css.phpの以下の2箇所で設定

td.menubar {
<?php   if ($media == 'print') { ?>
        display:none;
<?php   } else { ?>
/*      width:9em;*/
        width:12em;     <---サイドメニュー幅
        vertical-align:top;
<?php   } ?>
div#menubar {
<?php   if ($media == 'print') { ?>
        display:none;
<?php   } else { ?>
/*      width:9em;*/
        width:12em;     <---サイドメニューの文字表示幅
        padding:0px;
        margin:4px;
        word-break:break-all;
        font-size:90%;
        overflow:hidden;
< ?php   } ?>

サイドメニューを右側に

skin/pukiwiki.skin.phpの175行目あたりの<td valign="top">と<td class="menubar" style="background:#fff0e0">を入れ換える (1)と(2)を入れ換えた。

[右側メニュー]

<?php if (arg_check('read') && exist_plugin_convert('menu')) { ?>
<table border="0" style="width:100%">
 <tr>
  <td valign="top">                                               <--
   <div id="body"><?php echo $body ?></div>                         | (2)
  </td>                                                           <--
  <td class="menubar" style="background:#fff0e0">                 <--
   <div id="menubar"><?php echo do_plugin_convert('menu') ?></div>  | (1)
  </td>                                                           <--
 </tr>
</table>

メニューを左右に出す方法

参考ページ

html/Java Script/PHPなどのタグつきページを入れる方法

PukiWikiはタグを無視するのでそのままでは導入できない。そこでここから以下の内容プラグインを頂いてくる。

loader.inc.php

<?php
/*
 * PukiWiki ソースコードローダープラグイン
 *
 * CopyRight 2004-04-10 http://www.xillion.net
 * Version 1.0
 * 
 * 機能:別ファイルのHTMLソースコードをページに埋めこむ
 * 
 */

function plugin_loader_convert()
{
global $vars;

$folder = './loadtext/';
$file = '';
$body = '';

if(func_num_args()>0) {
$array = func_get_args();
$file = $array[0];
}

if(file_exists($folder.$file)){
$lines = file($folder.$file);
foreach ($lines as $value) {
$body .= $value;
}
fclose($file);
} else {
$body = $file . ' is not found.' ;
}

return $body;

}
?>

これをplugin/ディレクトに入れる。さらにloadtextというディレクトをpukiwikiインストールディレクトリに作成する。 pukiwiki.ini.phpがあるところが/(root)ディレクトリになる。

その後loadtextの下に適当なhtmlファイル(test.html)を作成する。 例えば

<H1> 試験ページ </H1>

<img src ="/test.jpg">

その後以下ように#loader(filename)とwikiの編集ページで記入すればOK

test.html is not found.

プラグイン名はpluginフォルダにあるxxx.inc.phpのxxxがその名前になるのかな?

人気の件数の表示

10件で、ISM PageとつくページとMenuBarのページを省いて表示する

#popular(10,ISM Page.*|MenuBar)

counterが必要なのでMenuBarに1290を設定しておく必要がある。

画像の入力

編集ページ(例えば編集ページ:TEST)で上のメニューから[添付]で画像(玄関ドア.jpg)をUPLOADする。その後以下のように指定する(30%は縮小)

#ref(./玄関ドア.jpg,30%)

OR

#ref(/TEST/玄関ドア.jpg,30%)

ピクセル数指定は

&ref(/TEST/玄関ドア.jpg,300x400);  <--#refでは定義されていない。xは小文字

画像位置は

#ref(./IMG_0270.JPG,CENTER,10%)

"画像以外の貼り付け"

#ref(./教育基本法.doc,noimg)

RSSのIE7について

IE7でメニューバにあるRSSアイコンをクリックすると「DTD付きはサポートされていません」というエラーがでるこれを回避するにはRSSのバージョンをVer1.0にする。

skin/pukiwiki.skin.phpの83行目くらいを以下のように変更 (rss ==> rss10)

[変更前]
<link rel="alternate" type="application/rss+xml" title="RSS" href="<?php echo $link['rss'] ?>" /><?php // RSS auto-discovery ?>
[変更後]
<link rel="alternate" type="application/rss+xml" title="RSS" href="<?php echo $link['rss10'] ?>" /><?php // RSS auto-discovery ?>

tdiary.skin.phpにも同じようなところがあるが、このskinの意味がわからないので今回は変更せず。

アンカーリンクにつて

例えば、リンクという文字列をクリックするとタイトル2という場所に飛ぶ。

リンク元:リンク

リンク先:*タイトル2

ページ名の下のhtmlエンコードリンクURL

非表示にするにはskin/pukiwiki.skin.phpの以下の値を0にする

// SKIN_DEFAULT_DISABLE_TOPICPATH
//   1 = Show reload URL
//   0 = Show topicpath
if (! defined('SKIN_DEFAULT_DISABLE_TOPICPATH'))
//      define('SKIN_DEFAULT_DISABLE_TOPICPATH', 1); // 1, 0
        define('SKIN_DEFAULT_DISABLE_TOPICPATH', 0); // 1, 0
                                                ^^^0に変更

フッターリンクの表示

フッターにある更新経過時間が表示されている部分を非表示にする。

pukiwiki.skin.phpの最後の方にある以下の部分をコメントアウトする

<!--      <===追加
<?php if ($related != '') { ?>
<div id="related">Link: <?php echo $related ?></div>
<?php } ?>
-->       <===追加 

自動WikiNameの非表示

DefalutではWikiNameとなる単語に勝手にリンクを張ろうとするがこれがうまく張れなく

エラーする例えば

VirtualHostと記入すると VertualHost?なんていう表示になる

これを防ぐにはpukiwiki.ini.phpで

// _Disable_ WikiName auto-linking
//$nowikiname = 0;
$nowikiname = 1;

とする

opf.inc.phpはpluginにopen_uri_in_new_window.jsはskinにコピーし、

添付のアップロードファイルの容量変更

php.iniの以下を変更

; Maximum size of POST data that PHP will accept.
;;post_max_size = 8M
post_max_size = 16M
; Maximum allowed size for uploaded files.
;;upload_max_filesize = 2M
upload_max_filesize = 16M

plugin/attach.inc.phpの以下を変更

// NOTE (PHP > 4.2.3):
//    This feature is disabled at newer version of PHP.
//    Set this at php.ini if you want.
// Max file size for upload on PHP (PHP default: 2MB)
//ini_set('upload_max_filesize', '2M');
ini_set('upload_max_filesize', '8M');     <--ここ

// Max file size for upload on script of PukiWikiX_FILESIZE
//define('PLUGIN_ATTACH_MAX_FILESIZE', (1024 * 1024)); // default: 1MB
define('PLUGIN_ATTACH_MAX_FILESIZE', (8 * 1024 * 1024)); // default: 1MB  <--ここ

memory_limit >= post_max_size >= upload_max_filesize とする必要がありあそう

php5.0.4ではこの変更でUploadできるようになったが、Downloadを行うと2MBでファイルが切れてしまう。php5.1.6にUpしたら問題なくなった

携帯のページについて

表示の容量の変更

Defaltでは5KByteなので10Kに変更

keitai.ini.phpを

// max_size (SKINで使用)
// $max_size = 5;       // SKINで使用, KByte
$max_size = 10; // SKINで使用, KByte

バージョンアップ

データにかんしては、attach backup cache counter diff trackback wikiをコピーして

場合によっては中のファイルについて777のアクセス権に変更する

その他skinディレクトリのファイルやpukiwiki.ini.phpを上書をする

階層構造のように見せる

ページ名を 1階層/2階層/3階層 のようにする すると Top/1階層/2階層/3階層のように表示される

#topicpath (&topicpath;)で

[[Top>Top]] / [[1階層>1階層]] / [[2階層>1階層/2階層]] / [[3階層>1階層/2階層/3階層]]

と表示されるのと同じ効果ある

編集等パスワードが必要なメニューをSSL化

pukiwiki.ini.phpの120行あたりに

//$script = 'http://example.com/pukiwiki/';
$script = 'http://wwwism.dyndns.org/'; <==追加
$script_ssl = 'https://wwwism.dyndns.org/';  <==追加

$scriptは全体のURLを示すパラメータのようだこれを変更すればフッターのアイコンやヘッダーのメニューのURLを変更できる。指定しないとデフォルトはpukiwiki.ini.phpのあるURLになる。httpはhttpにhttpsはhttpsになる
今回は明示していないとSSLにいってしまうとnonSSLにかえってこない

lib/html.phpの15行目あたりに

global $script, $vars, $arg, $defaultpage, $whatsnew, $help_page, $hr;
global $script_ssl;    <=追加

40行目あたりのSSLを利用するところを$scriptを$script_sslに変更

// Set $_LINK for skin
 $_LINK['edit']     = "$script_ssl?cmd=edit&amp;page=$r_page";
 $_LINK['freeze']   = "$script_ssl?cmd=freeze&amp;page=$r_page";
 $_LINK['new']      = "$script_ssl?plugin=newpage&amp;refer=$r_page";
 $_LINK['upload']   = "$script_ssl?plugin=attach&amp;pcmd=upload&amp;page=$r_page";  
 $_LINK['rename']   = "$script_ssl?plugin=rename&amp;refer=$r_page";

167行目あたり

// Show 'edit' form
function edit_form($page, $postdata, $digest = FALSE, $b_template = TRUE)
{
        global $script, $vars, $rows, $cols, $hr, $function_freeze;
        global $script_ssl;   <=追加

244行目あたりの$scriptを$script_sslに変更

<div class="edit_form">
 <form action="$script_ssl" method="post" style="margin-bottom:0px;">
$template

260行目あたりの$scriptを$script_sslに変更

 </form>
 <form action="$script_ssl" method="post" style="margin-top:0px;">
  <input type="hidden" name="cmd"    value="edit" />

pluginの変更
新規ページ作成
plugin/newpage.inc.phpの55260行目あたりの

//              header('Location: ' . get_script_uri() .
//                      '?cmd=read&page=' . $r_page . '&refer=' . $r_refer);
               header('Location: ' . $script_ssl .
                       '?cmd=read&page=' . $r_page . '&refer=' . $r_refer);

添付
plugin/attach.inc.phpの以下のようなところをscriptを$script_sslに変更した

392c392
<       global $script_ssl;
---
>
397,398c397,398
<    [<a href="$script_ssl?plugin=attach&amp;pcmd=list&amp;refer=$r_page"> {$_attach_messages['msg_list']}</a>]
<    [<a href="$script_ssl?plugin=attach&amp;pcmd=list">{$_attach_messages['msg_listall']}</a>]
---
>    [<a href="$script?plugin=attach&amp;pcmd=list&amp;refer=$r_page"> {$_attach_messages['msg_list']}</a>]
>    [<a href="$script?plugin=attach&amp;pcmd=list">{$_attach_messages ['msg_listall']}</a>]
414c414
< <form enctype="multipart/form-data" action="$script_ssl" method="post">
---
> <form enctype="multipart/form-data" action="$script" method="post">
502d501
<               global $script_ssl;
515c514
<                       $info = "\n<span class=\"small\">[<a  href=\"$script_ssl?plugin=attach&amp;pcmd=info$param\" title=\"$_title\">{$_attach_messages['btn_info']}</a>]</span>\n";
---
>                       $info = "\n<span class=\"small\">[<a href=\"$script? plugin=attach&amp;pcmd=info$param\" title=\"$_title\">{$_attach_messages ['btn_info']}</a>]</span>\n";
519c518
<               return "<a href=\"$script_ssl? plugin=attach&amp;pcmd=open$param\" title=\"$title\">$label</a>$count$info";
---
>               return "<a href=\"$script?plugin=attach&amp;pcmd=open$param\" title=\"$title\">$label</a>$count$info";
526d524
<               global $script_ssl;
574,575c572,573
<  [<a href="$script_ssl?plugin=attach&amp;pcmd=list&amp;refer=$r_page">{$_attach_messages['msg_list']}</a>]
<  [<a href="$script_ssl?plugin=attach&amp;pcmd=list">{$_attach_messages['msg_listall']}</a>]
---
>  [<a href="$script?plugin=attach&amp;pcmd=list&amp;refer=$r_page"> {$_attach_messages['msg_list']}</a>]
>  [<a href="$script?plugin=attach&amp;pcmd=list">{$_attach_messages['msg_listall']}</a>]
590c588
< <form action="$script_ssl" method="post">
---
> <form action="$script" method="post">

凍結
plugin/freeze.inc.phpの以下のようなところをscriptを$script_sslに変更した 13行目

global $script, $vars, $function_freeze;
global $script_ssl;

48行目

<form action="$script_ssl" method="post">

RENAME
plugin/rename.inc.phpの以下のようなところをscriptを$script_sslに変更した 91行目

global $script, $_rename_messages;
global $script_ssl;

112行目

<form action="$script_ssl" method="post">

134行目

global $script, $_rename_messages;
global $script_ssl;

155行目

<form action="$script_ssl" method="post">

掲示板 (#comment #response等)のスパム対策

plugin/comment.inc.php or response.inc.php

30行くらい

       if (PKWK_READONLY) die_message('PKWK_READONLY prohibits editing');

//スパム対策(Edit By JE2ISM)
       //リンク元チェック
       if(stripos($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST']) === FALSE){
               die_message('リファラー異常(スパム対策)');
       }
       //メッセージに http が2つ以上で不可
//      if (substr_count(strtolower($vars['msg']), 'http') >= 2){
//              die_message('「http」が2つ以上入った投稿は拒否します(スパム対策)');
//      }

//「#article」には題名の始まり文字を指定してその文字は記録時は削除

        if (substr(strtolower($vars['subject']), 0, 4) != 'ism:'){
                die_message(' 題名は「ism:」で始まる必要あり(スパム対策)');
        }else{
                $vars['subject'] = substr($vars['subject'], 4);
        }

        //その他環境変数
        if(empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) || empty($_SERVER['HTTP_ACCEPT'])){
               die_message('HTTP_ACCEPT が異常(スパム対策)');
       }
       if(stripos($_SERVER["HTTP_CONNECTION"], "Keep-Alive") === FALSE){
               die_message('HTTP_CONNECTION が異常(スパム対策)');
       }

plugin/article.inc.phpも同じで「$vars['msg']), 'http') >= 3」のvarsをpostにする ようだが、varsでもいいようだ。

プラグインのページあれこれ



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-05-19 (水) 21:35:27 (3008d)