Dokuwiki 侧边栏配置

Dokuwiki 侧边栏配置

默认的模版 dokuwiki,支持侧边栏。

  • (1)配置里有个 sidebar 侧边栏的页面名称,这里填写 页面路径
  • (2)创建这个页面。

此时,侧边栏就出来了。

当同级命名空间下有相应的侧边栏页面,则使用此页面。

相关插件

simplenavi

根据访问者权限列出所有命名空间,默认自动展开当前页面所属空间,不能折叠此空间。

命名空间页面链接自动指向:start页。

{{simplenavi>}}

可以指定起始空间:{{simplenavi>some:namespace}}
simpleindex

根据访问者权限列出所有命名空间,默认自动关闭所有命名空间。

<simpleindex>

可以指定排除的空间:<simpleindex ns1,ns2>
indexmenu

基于dtree,

navi

利用一个页面中的链接生成导航。自动根据当前页面展开命名空间。

Sidebar Template

自动加载本命名空间的sidebar页面。展示形式跟Dokuwiki的站点地图一样。

NsToC

列出指定命名空间的标题,可以指定标题的层级。场景:比如图书的目录等。

其他

pageindex,catlist, dir, nspages, pagequery

Dokuwiki插件:Wrap

Dokuwiki插件:Wrap

好久没更新了,继续写Dokuwiki的东西……

在我看来,此插件应属Dokuwiki使用中的必备用品之一,绝对值得关注。它主要扩充了排版功能,可以取代以前许多旧的插件。如果你曾经是Osmond的读者,应该对作者介绍一些诸如box、color之类的插件有印象,现在它们的功能都可以用wrap来完成。

更重要的是,用wrap,你可以轻松进行自定义

安装就不多说了,网址:http://www.dokuwiki.org/plugin:wrap

基本语法

总共有两种类型:以大写的<WRAP></WRAP>包围的生成区块元素,即<div></div>;以小写的<wrap></wrap>包围的生成行内元素,即<span></span>。

第一种:

<WRAP classes width :language>
区块元素内容
</WRAP>

第二种

<wrap classes width :language>行内元素内容</wrap>

其中classes指定元素的类(class),width给定一个宽度,language指定语言。在自定义中,最为常用的就是class了,语言一般不用考虑。

用法

说了这么多,估计你仍然不知道怎么用,我当时也不知道。幸好wrap的作者提供了非常完备有用的示例文件。把lib/plugins/wrap下面的example.txt的内容复制到一个wiki页面里就可以随时参考了。这里举几个例子

比如三栏排版

<WRAP column 30%>第一栏</WRAP>
<WRAP column 30%>第二栏</WRAP>
<WRAP column 30%>第三栏</WRAP>

column用来实现多栏排版,默认是左对齐的(CSS属性为float:left)。30%指定列的宽度,也可以用绝对宽度,如200px。

再如产生一个带圆角的漂亮盒子

<WRAP box 50% round></WRAP>

box和column类似,但是预定义了更多样式,默认是有背景色的。这里round指定要带圆角。

column和box有一个特殊的作用,实现对表格宽度的控制,比如占据50%的宽度(column和box中的表格默认都是100%宽度的)

<WRAP column 50%>
^表头^
|表内容|
</WRAP>

再如产生一个带下载图标的圆角盒子(不少网站都用这种效果……)

<WRAP download round 200px>
//**下载**//
</WRAP>

自定义

非常简单,用语法

<WRAP div_test></WRAP>

就会产生代码

<div class="wrap_div_test"></div>

只需要对wrap_div_test类定义CSS就行了。

<WRAP div_test 300px></WRAP>

限定了产生的<div>块的宽度

dokuwiki将编辑器修改为可视化,并支持代码高亮和QQ截图拷贝

Dokuwiki编辑器问题

1:Dokuwiki环境搭建

1.1:Dokuwiki自带安装文件

安装文件入口:/install.php
界面安装很方便

1.2:Dokuwiki自带zh-cn包

2:直接拷贝图片到编辑器

 

2.1:自带编辑器介绍

自带编辑器不支持所见所得,依靠一些标签来建立目录和页面排榜,尽管标签很强大,但是对于初学者或者不熟悉的人来说,比较麻烦.

2.2:更换流程及需求分析思考

思考: 要将编辑器改为所见所得,那么就两种方法,修改原先的编辑器或者更换编辑器.
流程:
2.2.1:去网上插件模板找找,是否存在这样的编辑器
2.2.2:更换为其他编辑器
2.2.3:修改原先的编辑器
总结:
我去网上找了,界面的插件倒确实不少,甚至有把FCK作为插件整合进来的,但是依然缺少一个功能就是将图片拷贝到编辑器里.
如果是自己编写这样的编辑器,显然代价太高最终决定是更换编辑器

2.3:更换编辑器为xheditor

2.3.1:将xheditor下载下来,并放入dokuwiki目录下的/lib文件夹下,新建一个目录叫xheditor-1.1.14(目前最新版本为1.1.14)
2.3.2:替换/inc/form.php里的函数form_wikitext(attrs)

源程序:

[php] view plain copy

print?

  1. <span style=”font-size:14px;”>function form_wikitext($attrs) {
  2. // mandatory attributes
  3. unset($attrs[‘name’]);
  4. unset($attrs[‘id’]);
  5. return ‘<textarea name=”wikitext” id=”wiki__text” ‘
  6. .buildAttributes($attrs,true).’>’.DOKU_LF
  7. .formText($attrs[‘_text’])
  8. .'</textarea>’;
  9. }</span>

替换程序:

[php] view plain copy

print?

  1. function form_wikitext($attrs) {
  2. // mandatory attributes
  3. unset($attrs[‘name’]);
  4. unset($attrs[‘id’]);
  5. return ‘<textarea id=”elm1″ rows=”15″ cols=”80″ style=”width:100%” name=”wikitext”>’.DOKU_LF
  6. .formText($attrs[‘_text’])
  7. .'</textarea>’;
  8. }

即:采用xheditor编辑器.

2.3.3:在/lib/tpl/dokuwiki/main.PHP添加xheditor包

[html] view plain copy

print?

  1. <script type=”text/javascript” src=”<?php echo DOKU_BASE;?>lib/xheditor-1.1.14/xheditor-1.1.14-zh-cn.min.js”></script>

2.3.4.在/inc/parser/xhtml.php里更改cdata函数

源程序:

[php] view plain copy

print?

  1. function cdata($text) {
  2. $this->doc .= $this->_xmlEntities($text);
  3. }

替换程序:

[php] view plain copy

print?

  1. function cdata($text) {
  2. $this->doc.=$text;
  3. }

替换原因是:因为以前是纯字符编辑器,会将一些特殊符号进行过滤,比如:<>等等.而替换之后的xheditor本身已经做了一次过滤了,再次过滤就会导致字符<变成&lt,因此去掉这段之后,就只过滤一次

2.3.5.添加js代码

[php] view plain copy

print?

  1. $(function(){
  2. $(‘#elm1’).xheditor({
  3. localUrlTest:/^https?:\/\/[^\/]*?(xheditor\.com)\//i,
  4. remoteImgSaveUrl:'<?php echo DOKU_BASE;?>lib/xheditor1-saveremoteimg.php?prefix=<?php echo DOKU_BASE;?>’
  5. });
  6. });

配置php后台上传路径

2.3.6:配置php截图上传代码:

/lib/xheditor-1.1.14/demos/saveremoteimg.php.在文件底部修改代码:
源程序:

[php] view plain copy

print?

  1. for($i=0;$i<$urlCount;$i++){
  2. $localUrl=saveRemoteImg($arrUrls[$i]);
  3. if($localUrl)$arrUrls[$i]=$localUrl;
  4. }
  5. echo implode(‘|’,$arrUrls);

替换程序:

[php] view plain copy

print?

  1. for($i=0;$i<$urlCount;$i++){
  2. $localUrl=saveRemoteImg($arrUrls[$i]);
  3. if($localUrl)$arrUrls[$i]=$localUrl;
  4. }
  5. foreach($arrUrls as $key=>$vo){
  6. $arrUrls[$key]=$_GET[‘prefix’].’lib/xheditor-1.1.14/demos/’.$vo;
  7. }
  8. echo implode(‘|’,$arrUrls);

2.3.7:将上传的图片去掉多余的”符号

图片上传,发布之后.在调用图片时,会多一个中文”符号,需要修改语言包/inc/lang/zh/lang.php
源程序:

[php] view plain copy

print?

  1. $lang[‘doublequoteopening’] = ‘“’;
  2. $lang[‘doublequoteclosing’] = ‘”’;

替换程序:

[php] view plain copy

print?

  1. $lang[‘doublequoteopening’] = ”;
  2. $lang[‘doublequoteclosing’] = ”;

3:编辑器新加插入代码功能

 

3.1:/lib/tpl/dokuwiki/main.php更新js代码

同之前的上传整合起来:
新增程序:

[javascript] view plain copy

print?

  1. <script type=”text/javascript”>
  2. var editor;
  3.         jQuery(pageInit);
  4. function pageInit()
  5.         {
  6. var allPlugin={
  7.                 Code:{c:’btnCode’,t:’插入代码’,h:1,e:function(){
  8. var _this=this;
  9. var htmlCode='<div><select id=”xheCodeType”><option value=”html”>HTML/XML</option><option value=”js”>Javascript</option><option value=”css”>CSS</option><option value=”php”>PHP</option><option value=”java”>Java</option><option value=”py”>Python</option><option value=”pl”>Perl</option><option value=”rb”>Ruby</option><option value=”cs”>C#</option><option value=”c”>C++/C</option><option value=”vb”>VB/ASP</option><option value=””>其它</option></select></div><div><textarea id=”xheCodeValue” wrap=”soft” spellcheck=”false” style=”width:300px;height:100px;” /></div><div style=”text-align:right;”><input type=”button” id=”xheSave” value=”确定” /></div>’;
  10. var jCode=jQuery(htmlCode),jType=jQuery(‘#xheCodeType’,jCode),jValue=jQuery(‘#xheCodeValue’,jCode),jSave=jQuery(‘#xheSave’,jCode);
  11.                     jSave.click(function(){
  12.                         _this.loadBookmark();
  13.                         _this.pasteHTML(‘<pre class=”prettyprint lang-‘+jType.val()+'”>’+_this.domEncode(jValue.val())+'</pre>’);
  14.                         _this.hidePanel();
  15. return false;
  16.                     });
  17.                     _this.saveBookmark();
  18.                     _this.showDialog(jCode);
  19.                 }}
  20.             };
  21.             editor=jQuery(‘#elm1’).xheditor({
  22.                 plugins:allPlugin,
  23.                 tools:’Cut,Copy,Paste,Pastetext,|,Blocktag,Fontface,FontSize,Bold,Italic,Underline,Strikethrough,FontColor,BackColor,SelectAll,Removeformat,|,Align,List,Outdent,Indent,|,Link,Unlink,Anchor,Img,Flash,Media,Hr,Emot,Table,|,Source,Print,Fullscreen,Code’,
  24.                 loadCSS:'<style>pre{margin-left:2em;border-left:3px solid #CCC;padding:0 1em;}</style>’,
  25.                 localUrlTest:/^https?:\/\/[^\/]*?(xheditor\.com)\//i,
  26.                 remoteImgSaveUrl:’lib/xheditor-1.1.14/demos/saveremoteimg.php?prefix=<?php echo DOKU_BASE;?>’,
  27.                 upLinkUrl:”<?php echo DOKU_BASE;?>lib/xheditor-1.1.14/demos/upload.php?immediate=1&prefix=<?php echo DOKU_BASE;?>”,
  28.                 upLinkExt:”zip,rar,txt”,
  29.                 upImgUrl:”<?php echo DOKU_BASE;?>lib/xheditor-1.1.14/demos/upload.php?immediate=1&prefix=<?php echo DOKU_BASE;?>”,
  30.                 upImgExt:”jpg,jpeg,gif,png”,
  31.                 upFlashUrl:”<?php echo DOKU_BASE;?>lib/xheditor-1.1.14/demos/upload.php?immediate=1&prefix=<?php echo DOKU_BASE;?>”,
  32.                 upFlashExt:”swf”,
  33.                 upMediaUrl:”<?php echo DOKU_BASE;?>lib/xheditor-1.1.14/demos/upload.php?immediate=1&prefix=<?php echo DOKU_BASE;?>”,
  34.                 upMediaExt:”wmv,avi,wma,mp3,mid”
  35.             });
  36.         }
  37.     </script>

3.2加入css和图片

3.2.1:css因为只有一句话,只是为了新增”插入代码”功能的一个小图标而来,因此,可以选择把这个css插入其他css里,而不必新建一个文件.我选择插入的css是:/lib/ style/screen.css:新增css:

[css] view plain copy

print?

  1. .btnCode {
  2. background:transparent url(../images/code.gif) no-repeat 16px 16px;
  3. background-position:2px 2px;}

3.2.2:将小图标 按照css添加路径放入对应css同级目录下的images文件夹内,作为插件插入代码的小图标.

4:编辑器代码高亮功能

 

4.1:引入google插件prettify.js插件

在/lib/tpl/dokuwiki/main.php里引入prettify.js和对应的css

[html] view plain copy

print?

  1. <script type=”text/javascript” src=”<?php echo DOKU_BASE;?>lib/xheditor-1.1.14/demos/prettify/prettify.js”></script>
  2. <link href=”<?php echo DOKU_BASE;?>lib/xheditor-1.1.14/demos/prettify/prettify.css” type=”text/css” rel=”stylesheet”>

4.2:调用prettify.js

这里需要注意,调用prettify.js需要放在xheditor编辑器textarea的后面,放前面会无效.
新增js代码:

[php] view plain copy

print?

  1. <?php tpl_content() ?>
  2. <script type=”text/javascript”>prettyPrint();</script>

4.3:修改css文件

引入代码高亮插件后,<pre>标签在dokuwiki下,会嵌套,导致样式会出现两个边框.
在prettify.css最后面,新增css
新增css文件:

[css] view plain copy

print?

  1. pre pre{box-shadow:none;border:0px;margin:0;padding:0;}
  2. span{font-style:normal;}

4.4:修改”/”符号出现

原本的dokuwiki里,文本会过滤掉/符号(这个我试过了,即便是最原始的安装好dokuwiki后,在编辑器里只要存在”/”符号,都会被过滤掉.根据wiki语法文档,/会被认为是字体斜体的标志)
而我们的代码里,经常会出现”//”代表注释,因此,需要修改dokuwiki代码.
修改文件/inc/parser/lexer.php:
源程序:

[php] view plain copy

print?

  1. function split($subject, &$split) {
  2. if (count($this->_patterns) == 0) {
  3. return false;
  4. }
  5. if (! preg_match($this->_getCompoundedRegex(), $subject, $matches)) {
  6. if(function_exists(‘preg_last_error’)){
  7. $err = preg_last_error();
  8. switch($err){
  9. case PREG_BACKTRACK_LIMIT_ERROR:
  10. msg(‘A PCRE backtrack error occured. Try to increase the pcre.backtrack_limit in php.ini’,-1);
  11. break;
  12. case PREG_RECURSION_LIMIT_ERROR:
  13. msg(‘A PCRE recursion error occured. Try to increase the pcre.recursion_limit in php.ini’,-1);
  14. break;
  15. case PREG_BAD_UTF8_ERROR:
  16. msg(‘A PCRE UTF-8 error occured. This might be caused by a faulty plugin’,-1);
  17. break;
  18. case PREG_INTERNAL_ERROR:
  19. msg(‘A PCRE internal error occured. This might be caused by a faulty plugin’,-1);
  20. break;
  21. }
  22. }
  23. $split = array($subject, “”, “”);
  24. return false;
  25. }
  26. $idx = count($matches)-2;
  27. list($pre, $post) = preg_split($this->_patterns[$idx].$this->_getPerlMatchingFlags(), $subject, 2);
  28. $split = array($pre, $matches[0], $post);
  29. return isset($this->_labels[$idx]) ? $this->_labels[$idx] : true;
  30. }

替换程序:

[php] view plain copy

print?

  1. function split($subject, &$split) {
  2. if (count($this->_patterns) == 0) {
  3. return false;
  4. }
  5. if (! preg_match($this->_getCompoundedRegex(), $subject, $matches)) {
  6. if(function_exists(‘preg_last_error’)){
  7. $err = preg_last_error();
  8. switch($err){
  9. case PREG_BACKTRACK_LIMIT_ERROR:
  10. msg(‘A PCRE backtrack error occured. Try to increase the pcre.backtrack_limit in php.ini’,-1);
  11. break;
  12. case PREG_RECURSION_LIMIT_ERROR:
  13. msg(‘A PCRE recursion error occured. Try to increase the pcre.recursion_limit in php.ini’,-1);
  14. break;
  15. case PREG_BAD_UTF8_ERROR:
  16. msg(‘A PCRE UTF-8 error occured. This might be caused by a faulty plugin’,-1);
  17. break;
  18. case PREG_INTERNAL_ERROR:
  19. msg(‘A PCRE internal error occured. This might be caused by a faulty plugin’,-1);
  20. break;
  21. }
  22. }
  23. $split = array($subject, “”, “”);
  24. return false;
  25. }
  26. $idx = count($matches)-2;
  27. list($pre, $post) = preg_split($this->_patterns[$idx].$this->_getPerlMatchingFlags(), $subject, 2);
  28. if(substr($this->_patterns[$idx].$this->_getPerlMatchingFlags(),0,5)=='(\/\/’){
  29. $pre=’//’.$pre;
  30. }
  31. $split = array($pre, $matches[0], $post);
  32. return isset($this->_labels[$idx]) ? $this->_labels[$idx] : true;
  33. }

这一步只是会把/不解析,但是仍然会转换为斜体,在修改文件/Inc/parser/xhtml.php:
源程序:

[php] view plain copy

print?

  1. function emphasis_open() {
  2. $this->doc .= ‘<em>’;
  3. }
  4. function emphasis_close() {
  5. $this->doc .= ‘</em>’;
  6. }

替换程序:

[php] view plain copy

print?

  1. function emphasis_open() {
  2. //$this->doc .= ‘<em>’;
  3. }
  4. function emphasis_close() {
  5. //$this->doc .= ‘</em>’;
  6. }

这个<em>标签就是斜体,会默认将/和/之间的字符都带上这个,把这个给注释掉.OK.解决

5:效果显示图:

 

4.1:插入代码:

4.1.1:插入界面

4.1.2:插入整体效果图

4.1.3:发布之后效果图

4.2:截图拷贝:

4.2.1:随意截图

4.2.2:发布效果

5:总结:

 

5.1:一款好的内容查询是多么的重要,因为有的时候是使用call_user_func,或者那个调用的函数就是一个变量,根本无法按ctrl+追踪,只能在调用那个方法的时候把这个变量输出,然后在用zend自带的内容查询遍历文件夹
5.2:编辑器中文界面是原本就有的,只需要选择对应语言包就可以了
5.3:遗憾的是,我感觉自己并没有很完美的修改它的程序,尽管我的确只是单单修改了斜体这个功能,而没有影响其他功能.但是我原本是想直接修改传入正则那段,因为去掉了匹配斜体那段正则,我觉得才是比较完美的作法.因为Doku_LexerParallelRegex类是比较独立的,正则都是传入的.但是当我打印正则时,实在是太庞大了,所以最终我还是放弃了这个思路.
5.3.1:图片插入那块,也是全靠编辑器的功劳,我至今也不理解他能把内存的图片拷贝到编辑器的原理(尽管官网说他是漏洞,庆亮说是一个对象操作,我查查资料研究下.

5.3.2:代码高亮那块是采用Google的prettify.js,那块实际上是用js来修改源代码,在一些关键字的地方加上一些标签和css属性,于是就产生了高亮,关于这块,我是比较担心兼容性问题的(单个页面不担心,但是wiki也引入一堆js,但是目前看来,我测试了几次,都没什么问题,那应该不会出现了)

6:完整版下载地址:http://download.csdn.net/detail/zouhao619/5014447

dokuwiki之使用与教程

dokuwiki是个很好的WIKI,不用数据库,用文本存储数据,转移方便。

今天再次使用Dokuwiki搭建一个wiki,用于介绍法格产品,专门摆放法格锅具、法格电器、法格橱柜的信息。

发现很多用法已经忘记了,特此记录,博客一可用来表达心情,二可用来记录

dokuwiki的安装

1,用了纯粹空间的unzip.php但是没成功,不知道怎么回事,少的数目文件能解压,多文件就不能解压,难道dreamhost做了空间限制?查看后发现有很多语言文件,在inc lib目录下,点开到里面找lang目录,只保留了en zh二个目录文件,就是英文和中文,凭我这智商,能看懂这二个就不错了。用cutftp上传,成功。原来 文件太多,传到后来就出错

2,现在安装了

很简单,在目录后打入install.php,比方http://www.zjtianxiang.com/bk是我FTP上去的目录,那么安装 就在浏览器里打入http://www.zjtianxiang.com/bk/install.php.在页面右侧选择语言为:ZH,马上看见熟悉的汉字出来了,依次选择,你站点的名字,人们是否可以访问你的站点,这里我选择ACL,因为我要搭一个,一部分可以任何人访问 ,一部分只有部分用户可以访问的站点。安装完后,安全起见要删掉install.php文件.另外,这里所做选择可以在管理里面,有更详细的控制

dokuwiki做一个可控的wiki

说到控制,先要说到命名空间和页面。

命名空间代表一组页面的集合,比方饮料,下面可以包括茶、咖啡、可乐。

而具体的 绿茶,就是个页面了,比方绿茶是什么的页面

但是绿茶还可以再分的,比方龙井、毛尖,所以也可以把绿茶既做为命名空间,也做为页面,但是在wiki中写法不同。

写一个饮料的命名空间是这样的:

[[:饮料:茶]]前面一个:饮料 代表一个命名空间,茶代表一个页

[[:茶:龙井]]就是个茶的命名空间了

那为什么要去做命名空间呢?

因为当他形成一个命名空间时,可以对一个命名空间给权限,这样就起到了访问控制。

加几个用户名,把这个用户名做到一组,比方work,这样做的好处,用过linux都知道,只需对组给权限就可以了,会简单的多

管理员登录–》下面管理—》访问控制–》进入后

选择左侧刚才 做的命名空间,(注意,命名空间前面有+号,页面没有)到右侧输入组的名字,比方刚才 的work.

然后在下面会出现一个权限,越往上越大,最大是删除,一般到上传就可以了。万一删除就不好了。再点确定。

下面会有给各组的权限。

这样就有了一个别人能看主页面,work工作组能访问编辑 饮料 页面组的维基了。

以此交流。

DokuWiki 设置

为DokuWiki添加登录功能

DokuWiki的登录功能默认是关闭的,您可以通过配置local.php,users.auth.php,acl.auth.php这三个文件来设置DokuWiki的登录功能。

具体设置方法请见下面的说明:以本机调试为例。

DokuWiki的安装

  1. 首先去wiki官方网站去下载一个最新版本。
  2. 将下回来的文件解压,并传到站点根目录下的dokuwiki1)文件夹中。
  3. 在浏览器中输入类似“www.example.com/dokuwiki/index.php”格式的网址,就可以访问wiki了。

DokuWiki的配置

DokuWiki默认的首页为Python 俱乐部页,现在首页里没有任何内容,页面也是英文的。下面我们来配置几个参数,让我们的wiki更符合我们的要求。

配置local.php 全局设置

在conf目录下,找到local.php.dist,这个文件即local.php的样本,将其复制一份,重命名为:local.php。

local.php采用utf-8编码存储,使用支持utf-8编码的文本编辑器打开,内容见下(为了查看方便,去掉了一部分注释,请仔细对照):

  • 原选项前含有“//”注释符号,若想使相应选项生效,必须去掉注释符。
$conf['title'] = 'My Wiki';              //wiki页面的标题,即页面右上方的标题。
$conf['useacl'] = 1;                     //启用ACL管理。0-不启用;1-启用。见下:
  • 使用acl权限审核。acl-Access Control Lists(访问控制列表)。有两个选项:0-关闭权限审核,1-开启权限审核。
  • 如果想添加用户登录功能,必须开启权限审核。
$conf['superuser'] = 'admin';            //超级用户(管理员)登录名。
$conf['authtype'] = 'plain';             //这里使用plain(简单)验证方式。

常用的三种登录验证方式:

  * plain-使用配置文件,conf/acl.auth.php存储用户名及密码资料。
  * ldap-使用ldap主机的用户资料来做使用者验及提供用户身份。
  * mysql-使用mysql数据库资料存储用户资料。
  //require_once ("mysql.conf.php");        //如果你不使用MySQL数据库,那么就请保持这一行的注释状态,或干脆删除该行。

接下来,根据情况,添加如下内容:

$conf['lang'] = 'zh';                    //wiki的界面语言。默认为“en”,中文请改为“zh”。
$conf['youarehere'] = 1;                 //显示you are here导航。0-不显示,1-显示。
$conf['defaultgroup'] = 'user';          //默认用户组。
$conf['htmlok'] = 1;                     //是否支持html标记。0-不支持,1-支持。
$conf['phpok'] = 0;                      //是否支持php脚本。0-不支持,1-支持。
$conf['openregister'] = '0';             //是否允许用户注册。0-不允许,1允许。

至于local.php文件配置完成。

配置acl.auth.php 权限管理

acl.auth.php中存储用户组及页面权限信息。在conf目录下,找到acl.auth.php.dist,这个文件即acl.auth.php的样本,将其复制一份,重命名为:acl.auth.php。

默认的acl.auth.php文件内容如下:

# acl.auth.php
<?php exit()?>
# Don't modify the lines above
#
# Access Control Lists
#
# Editing this file by hand shouldn't be necessary. Use the ACL
# Manager interface instead.
#
# If your auth backend allows special char like spaces in groups
# or user names you need to urlencode them (only chars <128, leave
# UTF-8 multibyte chars as is)
#
# none   0
# read   1
# edit   2
# create 4
# upload 8
# delete 16
*               @ALL        8

注意,这个权限表由下往上是相互包含的,即如果你为一个用户组设置上传权限,那么上传权限以上的权限,读取,编辑,建立等是自动添加的,一定要注意。按此编辑用户组权限如下:

  *	@admin	255                   //为admin用户组分配全部权限。255这个权限值是专为admin用户组准备。
  *	@user	8                     //为user用户组分配上传以下的权限。
  *	@ALL	1                     //为所有人,即浏览者分配读取权限。
  playground:playground	@ALL	2     //为playground:playground页面分配编辑权限。

配置users.auth.php 用户配置

users.auth.php中存储用户组及页面权限信息。在conf目录下,找到users.auth.php.dist,这个文件即users.auth.php的样本,将其复制一份,重命名为:users.auth.php。

默认的users.auth.php文件内容如下:

# users.auth.php
# <?php exit()?>
# Don't modify the lines above
#
# Userfile
#
# Format:
#
# user:MD5password:Real Name:email:groups,comma,seperated

最后一行,即user:MD5password:Real Name:email:groups,comma,seperated即添加单个用户配置的标准格式。

user                     -->用户名
md5password              -->采用md5加密的密码
real name                -->真实姓名
email                    -->电邮地址
groups                   -->用户组

各个权限项之间用:分隔。举例如下,用户名:admin,密码:admin,真实姓名:tr.c,电邮地址:tr.c@huobao0911.com,用户组admin

admin:21232f297a57a5a743894a0e4a801fc3:tr.c:tr.c@huobao0911.com:admin

生成md5编码

用记事本编辑以下文本行,存储为md5.php,在服务器上调试此文件,生成相应文本的md5编码:

<form action="" method="post" name="form1">
  <input type="text" name="textfield">
  <input type="submit" name="Submit" value="create">
</form>
<?php
echo $_POST["textfield"];
echo "<br>";
echo md5( $_POST["textfield"]);
?>

至此,DokuWiki的登录设置完成。

DokuWiki安装在Windows 上

安装DokuWiki服务器的要求

  • 具有PHP 支持的Web 服务器
  • 首选Apache
  • 对PHP的要求
  • 基于某些安全考虑强烈建议使用PHP 4.3.10及其以上的版本
  • 使用libGD2 的PHP’s GD 扩展 — 可选项
  • 建议运行于PHP的 Safe Mode
  • 建议运行于PHP的 register_globals=off 模式.

DokuWiki 的目录结构

dokuwiki
|-- bin
|-- conf                        ---  存放配置文件
|   |-- acl.auth.php.dist         --- acl.auth.php(ACL 控制配置文件)的默认发布 *
|   |-- acronyms.conf             --- 用于定义首字母缩写词,以便当鼠标移动到这些词时显示解释信息
|   |-- dokuwiki.php              --- DokuWiki 的主配置文件 *
|   |-- entities.conf             --- 用于定义实体字符 **
|   |-- interwiki.conf            --- 用于定义 interwiki,以便使用简单的方式书写 URL **
|   |-- local.php.dist            --- local.php(本地配置文件)的默认发布 *
|   |-- mediameta.php             --- 定义用于 media manager 的 meta data 配置 *
|   |-- mime.conf                 --- 定义 mimetypes 的配置文件 *
|   |-- msg                       --- 一个标志文件,用于判断当前版本是否为最新 *
|   |-- mysql.conf.php.example    --- mysql.conf.php(mysql 用户认证的配置文件)的默认发布 *
|   |-- smileys.conf              --- 用于定义“笑脸”的配置文件 *
|   |-- users.auth.php.dist       --- users.auth.php(文本用户认证的配置文件)的默认发布 *
|   |-- wordblock.conf            --- 用于配置不允许书写的 URL **
|   `-- words.aspell.dist         --- words.aspell(拼写检查配置文件)的默认发布 *
|-- data                        ---  存放文档数据
|   |-- attic                     ---  存放版本信息
|   |-- cache                     ---  数据缓存
|   |-- index                     ---  存放内部索引
|   |-- locks                     ---  用于存放编辑页面时的锁定文件
|   |-- media                     ---  存放图片等
|   |-- meta                      ---  存放 meta 以便系统读取这些信息生成页面
|   |-- pages                     ---  存放 wiki 页面
|   `-- tmp                       ---  临时目录
|-- inc                         ---  DokuWiki 的 Include 目录
|   |-- auth                      --- 存放不同方式的用户认证脚本
|   |-- geshi                     --- 使用 geshi 进行代码加亮显示
|   |-- lang                      --- 多语言支持
|   |   |-- en
|   |   |-- fr
|   |   |-- zh
|   |   `-- zh-tw
|   `-- parser                    --- DokuWiki 的核心解析器
`-- lib
    |-- exe
    |-- images
    |-- plugins                   ---  存放插件的目录
    |   |-- acl
    |   |-- config
    |   |-- importoldchangelog
    |   |-- info
    |   |-- plugin
    |   `-- usermanager
    |-- scripts
    |-- styles
    `-- tpl                       ---  存放模版的目录
        `-- default

DokuWiki安装在Windows

在Windows环境下要运行Dokuwki,你可以:

  • 直接下载 Apache、PHP,安装之后配置 Apache+PHP

安装步骤

  • 配置支持PHP的Web服务器
  • 下载 最新版的DokuWiki
  • 将下载文件dokuwiki-YYYY-MM-DD.tgz 解压
  • 复制内容到Web文档根目录

小贴士:

若你希望以http://wiki.mytest.net 域名访问WIKI站,将dokuwiki-YYYY-MM-DD 目录里的内容复制到Web文档根目录

若您希望以http://mytest.net/dokuwiki 域名访问WIKI站,首先将dokuwiki-YYYY-MM-DD 目录改名为dokuwiki,然后将dokuwiki目录复制到Web文档根目录

Dokuwiki安装

Dokuwiki的安装是很简单的,无需修改任何文件,只需要解压缩然后填入一些基本信息就可以了。当然,这在很大程度上和它不需要数据库有关。想想如果要MySQL,那要增加多少步骤。

下载

在官方网站下载最新的稳定版:http://www.splitbrain.org/projects/dokuwiki ,然后解压缩到你的网站目录下,比如/var/www/dokuwiki。

修改权限

修改权限以使Web服务器对文件有相应的读写权限。

  • 对于Linux系统,假设Web服务器的用户和组是www-data,那么执行

sudo chown www-data:www-data -R /var/www/dokuwiki
  • 如果是Windows的系统,可以右键打开文件夹的属性,找到“权限”选项卡,然后对Web服务器的用户组赋予相应权限。(这是XP的操作。VIsta和Win7没用过,不知道改没改)

安装

现在在浏览器中输入地址,比如http://localhost/dokuwiki ,应该可以看到Dokuwiki的界面了。如果出现错误,一般是权限有问题。不过这并不是装好了,你还没有自己的账户,也不能进行任何配置。

要真正完成安装,在浏览器中输入,比如http://localhost/dokuwiki/install.php ,这会打开安装页面。先在右上角的“Choose your language”后面的下拉列表中选择“zh”,将页面变成中文。

现在开始安装配置:

  • 维基名称:你wiki的名字,比如我的是Lainme’s Blog

  • 启用ACL(推荐):即启用权限控制,这个保持默认(选中状态)

  • 超级用户:输入超级用户的用户名

  • 全名:超级用户的全名,和上一个一样就行

  • E-Mail:超级用户的电子邮件地址

  • 密码:超级用户的密码

  • 请再输一次:再次输入密码

  • 初始的ACL政策:全局权限控制策略,在下拉列表中选择一个合适的

    • 开放的维基(任何人都有读、写、上传的权限)

    • 公开的维基(任何人都有读的权限,只有注册用户才有写和上传的权限)

    • 关闭的维基(只有注册用户才有读、写、上传的权限)

填写完成后按“保存”完成安装。现在再次进入http://localhost/dokuwiki ,可以在右下角看到有个“登录”按钮,同时标题栏也变成了你设定的网站名称。

为了安全,最好删除目录下的install.php文件。虽然Dokuwiki自身也有保护,install.php已经不能再次运行,不过还是以防万一吧。

linux下安装 Dokuwiki

DokuWiki是一个开源wiki引擎程序,运行于PHP环境下。DokuWiki程序小巧而功能强大、灵活,适合中小团队和个人网站知识库的管理。

DokuWiki不需要数据库,直接采用文本文件直接存储。

更新网页时无需html知识,只需记住几个简单的用法,更重要的是可以专注于网页的内容。

安装Dokuwiki

安装DokuWiki是很简单的事情—通常只需解压缩和设置权限。请你先按照这里提供的简单指示来操作,如果你遇到问题或者觉得这些指示不够详细,请点击其中的链接来了解更多。

  • 步骤1: 从下载页面下载最新版的dokuwiki。
  • 步骤2: 安装之前先阅读security page,要认真对待它;如果有疑问,如果能读英语请在mailinglist中咨询,如果不会,可以去 irc://irc.freenode.net 的 #ubuntu-cn 频道碰碰运气,大概是唯一有中文 dokuwiki 用户常驻的地方。
  • 步骤3: 解压缩下载的压缩包,并上传/复制到你的网站空间中。
  • 步骤4: 通过浏览器访问你的dokuwiki中的install.php,并按照页面给出的提示进行。
  • 步骤5: 可浏览manual来发掘dokuwiki的功能。

以下是更详细的资料,有时间再继续翻译。另外,可使用EasyPHP来搭建 PHP+Mysql+PHPMyadmin环境。要注意,dokuwiki是不需要数据库支持的。

1. 首先安装Apache和PHP
# yum install httpd*
# yum install php*

在这里使用里*,是安装所有的httpd和php相关的包的意思。

2. 下载Dokuwiki包

把下载的Dokuwiki包,使用SFTP存放到/var/www目录下。

# cd /var/www/
# tar -zxf dokuwiki-de8b19be26a1d74ba5bd5e075dbb7996.tgz
3. 变更权限
# chown -R apache:apache /var/www/dokuwiki
# find /var/www/dokuwiki -type f -exec chmod 0600 \{\} \;
# find /var/www/dokuwiki -type d -exec chmod 0700 \{\} \;
4. 页面安装

打开浏览器输入 http://YouIp/install.php。

配置完成后删除install.php文件。

# cd /var/www/dokuwiki
# rm -i install.php

Dokuwiki在Nginx上的安装和配置

Dokuwiki在Apache上安装很简单,这里说说在Nginx的设置。

一、禁止DOKUWIKI敏感目录的访问

在Apache下,因为各目录下的.htaccess文件已经设置好了,所以无需任何修改就可以用,但是Nginx下不仅要禁止目录访问,还要加密目录,否则输入文件名依然可以下载。加密目录的方法请参看LNMP下为Nginx目录设置访问验证的用户名密码。下面是配置文件。

location ^~ /conf/

{

deny all;

auth_basic “Authorized users only”;

auth_basic_user_file 验证文件路径;

}

location ^~ /data/

{

deny all;

auth_basic “Authorized users only”;

auth_basic_user_file 验证文件路径;

}

location ^~ /inc/

{

deny all;

auth_basic “Authorized users only”;

auth_basic_user_file 验证文件路径;

}

location ^~ /bin/

{

deny all;

auth_basic “Authorized users only”;

auth_basic_user_file 验证文件路径;

}

二、NGINX下配置DOKUWIKI伪静态

安装在根目录下的配置文件:

rewrite ^(/)_media/(.*) $1lib/exe/fetch.php?media=$2 last;

rewrite ^(/)_detail/(.*) $1lib/exe/detail.php?media=$2 last;

rewrite ^(/)_export/([^/]+)/(.*) $1doku.php?do=export_$2&id=$3 last;

location /

{

if (!-f $request_filename)

{

rewrite ^(/)(.*)?(.*) $1doku.php?id=$2&$3 last;

rewrite ^(/)$ $1doku.php last;

}

}

SAE上部署Dokuwiki的开源框架

SAE上部署Dokuwiki的开源框架,显示无法登陆注册,同时Email功能无法使用。

2014-09-19 15:12

提问者采纳

SAE应用仓库看看吧

sae不支持写入

Email也要修改代码,SAE邮件class , 目前只支持SMTP.

<?php

$mail = new SaeMail();

$mail->setAttach( array("my_photo.jpg" => "照片的二进制数据" ));

$mail->quickSend(

"to@sina.cn" ,

"邮件标题" ,

"邮件内容" ,

"smtpaccount@gmail.com" ,

"password"

);

$mail->clean();

// 重用此对象

$mail->quickSend(

"to@sina.cn" ,

"邮件标题" ,

"邮件内容" ,

"smtpaccount@unknown.com" ,

"password" ,

"smtp.unknown.com" ,

25

); // 指定smtp和端口

?>

sae因为不能写入文件,但是,有免费的特点,适合发布已经写好的知识库

dokuwiki 系统时间错误

不论是在我自己机器上还是其他主机上,只要部署了dokuwiki,其系统时间(也就是修改或者提交的记录时间)都会比我的本机时间晚8个小时。比如,我的本机时间是2011\9\20 22:00:00,那么记录时间就会是2011\9\20 14:00,请问如果要更改为本机时间,怎么修改?
1楼的。。。是修改linux系统的cmos时间吧,牛头不对马嘴。。。。。。
我的dokuwiki是部署在windows系统上的,包括xp和2003和win7。

2013-04-16 21:58

提问者采纳

直接在init.php里修改吧
date_default_timezone_set('PRC');
提问者评价
对了!按照这个方法改就成功了!