PmWiki

Wiki software


title: "PmWiki" type: doc version: 1 created: 2026-02-28 author: "Wikipedia contributors" status: active scope: public tags: ["free-wiki-software", "free-software-programmed-in-php", "free-content-management-systems"] description: "Wiki software" topic_path: "technology/web" source: "https://en.wikipedia.org/wiki/PmWiki" license: "CC BY-SA 4.0" wikipedia_page_id: 0 wikipedia_revision_id: 0

::summary Wiki software ::

::data[format=table title="Infobox software"]

FieldValue
logoPmWiki Logo.svg
logo size160px
screenshotPmwiki_screenshot.png
namePmWiki
authorPatrick R. Michaud
developer
released
latest release version
latest release date
latest preview versionSVN only
latest preview datenightly
operating systemCross-platform
platformPHP
genreWiki
licenseGNU General Public License
website
::

| logo = PmWiki Logo.svg | logo size = 160px | screenshot = Pmwiki_screenshot.png | name = PmWiki | author = Patrick R. Michaud | developer = | released = | latest release version =
| latest release date = | latest preview version = SVN only | latest preview date = nightly | operating system = Cross-platform | platform = PHP | genre = Wiki | license = GNU General Public License | website = PmWiki is a wiki-based content management system designed for a collaborative creation and maintenance of websites.

It is free software written in PHP, licensed under the terms of the GNU General Public License.

TV Tropes, a popular wiki focused on narrative devices, is based on a proprietary fork of PmWiki.

Design focus

PmWiki is a wiki engine intended for collaborative web publishing. It includes features that support collaborative editing with built-in tools for access control, delegation, monitoring, review, and edit reversion. PmWiki's design allows configuration and extension, enabling updates to the core software while supporting local modifications.

In addition to standard collaborative features like content management and knowledge bases, PmWiki is utilized by companies and groups as an internal communication platform offering tools for task management and meeting archives. It is also employed by university and research teams.

PmWiki's markup syntax includes features such as pagelists, templates, page text variables, conditional directives, and syntax highlighting support, which may not be present in all other wiki engines. The edit form, since version 2.3.0, can have syntax highlighting enabled for its own wiki markup dialect.

Features

Content storage

PmWiki uses regular text files to store content. Each page of the wiki is stored in its own file on the web server. By default pages are stored in 8-bit or UTF-8 encoding, with page text, metadata, and revision history in the same file. According to the author, "For the standard operations (view, edit, page revisions), holding the information in flat files is clearly faster than accessing them in a database..."

The storage class is extensible, allowing add-ons to enable other storage systems and formats. For example, with add-ons, a website can use SQLite or MySQL databases, or XML files for storage.

PmWiki supports "attachments" (uploads: images or other files) to its wiki pages. The attachments can be versioned. There are PmWiki add-ons allowing easier management of the uploaded files, e.g. deletion or thumbnail/gallery creation.

Wiki structure

Wiki pages are contained within namespaces, called "wiki groups". Multiple namespaces can be used, and each namespace can have its own configuration options, add-ons, access control, skin, styles, sidebar (menu), the language of the content, and interface.

Hierarchically, every page is contained in a namespace. It is possible to display and navigate through pages in a tree-like structure with a "wiki trail". Through recipes, it is possible to have a flat structure (no wiki groups), multiple nested groups, or sub-pages.

Special namespaces are "PmWiki", Site, SiteAdmin, and Category which contain the documentation and some configuration templates.

Markup

The PmWiki markup shares similarities with MediaWiki. Here is a sample of commonly used markup rules.

Links are usually wrapped in double brackets, optionally with link text: ::code[lang=tid] [[Other page]], [[Page|link text]], [[Page|+]] (shows the page title), [[Page#anchor|Link text]], [[Link#~text to be highlighted|Link to text fragment]] https://example.com/path/, mailto:mailbox@example.com (plain links) [[https://example.com/path/|Link text]] Wikipedia:Wiki_software (InterMap links) ::

It is possible to enable internal links for CamelCase words without brackets, and add-ons can enable other link markups like @Page.

Headings are preceded with exclamation marks: ! Top-level heading () !! Second-level heading ... !!!!!! Sixth-level heading

It is possible to enable an automated table of contents coming with the PmWiki core, or install one among several Table of contents add-ons.

Lists are prefixed by "*" (bulleted), "#" (numbered), and ":" (description) and can be nested: ::code[lang=wikitext]

  • List item
  • List item ** Nested item

Ordered list

Another item

** Nested bulleted item

:Term: Description :Another term: Its description ::Nested term: Description ::

Directives for listing pages and attachments, and including pages and templates: (:pagelist group=Cookbook order=-time count=20:)

(:attachlist name=*.jpg:)

(:include AnotherPage#fromanchor#toanchor:)

(:include MyTemplate variable=value othervariable="Some value":)

Other page directives allow setting the page title, description, and keywords, disabling layout sections like sidebars or footers, creating tables, or defining page text variables. Add-ons allow for extra functionality.

Inline markup: , @@code (fixed-width)@@, %classname%CSS styled text%%, [-small text-], [+large text+], {+inserted+}, {-deleted-}, '^superscript^', 'subscript', %hlt php%[@ code block, possibly with syntax highlighting @]

Semantic block tags: classname id=identifier Division block

(:div class=name id=identifier:)...(:divend:) (:article ...:)...(:articleend:) (:section ...:)...(:sectionend:) (:header ...:)...(:headerend:) (:footer ...:)...(:footerend:) (:details summary="Toggle details":)...(:detailsend:)

(:div3 ...:)...(:div3end:) - Nested block, div, section, header, footer, article, aside, address, nav, details

Conditional markup: (:if name *.HomePage:) This is the homepage of a namespace (:elseif auth edit:) Current user can edit (:else:) ... (:ifend:)

Other markup rules can be enabled through recipes (add-ons).

HTML is not available for the edit form out of the box, but it is possible to enable selected tags through add-ons.

Skin templates

PmWiki includes a templating system for modifying interface layout and design.

Since version 2.3.30, the core responsive skin can have a dark theme enabled. The dark mode functions are available for reuse by custom skins.

Access control

PmWiki permits users and administrators to establish password protection for individual pages, groups of pages, or the entire site. For example, defined zones may be established to enable collaborative work by certain groups, such as in a company intranet.

Password protection can be applied to reading, editing, uploading to, and changing passwords for the restricted zone. The out-of-the-box installation uses "shared passwords" rather than login names, but a built-in option can enable a user/group-based access control system on pages, groups of pages or the whole wiki.

PmWiki can use passwords from config files, special wiki pages, and .htpasswd/.htgroup files. There are also user-based authorization possibilities and authentication via external sources (e.g. LDAP, forum databases, etc.).

Customization

PmWiki follows a design philosophy A number of hooks in the wiki engine allow for creating extensions and custom installations.

System requirements

Recent PmWiki releases require a web server that can run PHP version 5.4 or more recent. PmWiki can be installed on web servers or run locally using a provided script, for example from a USB flash drive.

Books and articles about PmWiki

The following books analyse PmWiki, have dedicated chapters or sections, compare it with other wiki and CMS software:

  • Todd Stauffer, How to Do Everything With Your Web 2.0 Blog,
  • White, Pauxtis, Web 2.0 for Business: Learning the New Tools,
  • Nancy Courtney, More Technology for the Rest of Us: A Second Primer on Computing for the Non-IT Librarian,
  • Karen A. Coombs, Amanda J. Hollister, Open Source Web Applications for Libraries, 2010,
  • Holtz, Demopoulos, Blogging for Business: Everything You Need to Know And Why You Should Care,
  • Ebersbach, Glaser, Heigl, Wiki: Kooperation Im Web (German),
  • Lange, Christoph (ed.): Wikis und Blogs - Planen, Einrichten, Verwalten, C&L 2006 (German)
  • Frank Kleiner, A Semantic Wiki-based Platform for IT Service Management, Karlsruhe Institute of Technology (KIT) Scientific Publishing, 2015,
  • Pullman, Baotong, Designing Web-Based Applications for 21st Century Writing Classrooms, Taylor & Francis, Abingdon-on-Thames, 2016,
  • Tim Massaro, Toni Cairns (IBM), Collaborate Quickly with Wiki!, iSeries NEWS, 2005
  • Brian May, Open Source Applications on IBM i, System iNEWS, 2009
  • Lauren Barack, Never-Ending Story (Histoire sans fin), School Library Journal, 2007, about a collaborative effort of 8 authors writing a children's book on PmWiki
  • Brenda Chawner, Paul Lewis, WikiWikiWebs: New Ways to Communicate in a Web Environment, Information Technology & Libraries, 2006.
  • Matthew Bejune (Perdue U), Wikis in Libraries, Information Technology & Libraries, 2007

PmWiki has been featured in a number of printed and online magazines including Inc Magazine, LXer, Framasoft, Linuxfr.

The page PmWiki References lists publications about PmWiki in various languages.

References

References

  1. [http://www.pmichaud.com/wiki/Pm/AboutPm Dr. Patrick Michaud.] About Page
  2. [http://www.pmwiki.org/pub/pmwiki/older-releases/ PmWiki version 0.1 (tgz archive)] has its most recent file from Jan 08, 2002. The [http://www.pmichaud.com/pipermail/pmwiki-users/ PmWiki-Users Mailing list] exist since August 2002.
  3. [http://www.wikimatrix.org/show/PmWiki WikiMatrix / PmWiki Features - Compare Them All], WikiMatrix. Cosmo Code, 22 Nov. 2005. Web. 30 Nov. 2011.
  4. [https://www.pmwiki.org/ PmWiki home page]
  5. [http://wiki.dreamhost.com/PmWiki "PmWiki - DreamHost." DreamHost. New Dream Network, LLC, 7 July 2005. Web. 30 Nov. 2011.] {{Webarchive. link. (2016-05-14)
  6. [https://www.pmwiki.org/wiki/PmWiki/PmWikiPhilosophy PmWiki philosophy]
  7. [https://www.pmwiki.org/wiki/PmWiki/PmWikiUsers PmWiki Users]
  8. [https://web.archive.org/web/20060314022943/http://www.inc.com/magazine/20060201/handson-technology.html The End of E-Mail], article by Darren Dahl, published in [[Inc. Magazine]], February 2006, page 41
  9. [http://linuxgazette.net/114/shekhar.html PmWiki - Wiki the Painless Way], article by Raj Shekhar, [[Linux Gazette]] magazine, May 2005
  10. "PmWiki: wiki simple".
  11. "wiki.audio: collaborative platform for interactive web-based education". Erich Thienhaus Institute, Detmold University of Music.
  12. "PmWiki - Cookbook / Creole". pmwiki.org.
  13. "PmWiki Release notes, version 2.3.0".
  14. "PmWiki Cookbook / PmSyntax".
  15. "PmWiki Design - Flat File Advantages".
  16. "Uploads administration".
  17. "Cookbook / Attachments/Uploads".
  18. "PmWiki / WikiGroup".
  19. "PmWiki / Local customizations".
  20. "PmWiki / WikiTrails".
  21. "PmWiki Basic Editing".
  22. "PmWiki / Table of contents".
  23. "PmWiki / Skins".
  24. "Cookbook / DarkColorScheme".
  25. "PmWiki / Password administration".
  26. "PmWiki Cookbook".
  27. "PmWiki - Cookbook / Standalone". pmwiki.org.
  28. [[Linux Gazette]], ''[[PCMag]]'',[https://www.pcmag.com/article2/0%2c2817%2c1843783%2c00.asp Working Together With Wikis], article by Anil Hemrajani, August 3, 2005, [https://books.google.com/books?id=z_gb8AdBqj8C&dq=PmWiki&pg=PA69 scanned pages on Google Books]
  29. [http://lxer.com/module/newswire/view/89566/index.html Organizing Information], article by Ian MacGregor, July 8, 2007
  30. [http://www.framasoft.net/article2972.html PmWiki], September 2004, December 2010 (French)
  31. [http://linuxfr.org/news/sortie-de-pmwiki%C2%A02229 Sortie de PmWiki 2.2.29], article by Lucas Bonnet, July 2011 (French)
  32. "PmWiki | PmWiki / References".

::callout[type=info title="Wikipedia Source"] This article was imported from Wikipedia and is available under the Creative Commons Attribution-ShareAlike 4.0 License. Content has been adapted to SurfDoc format. Original contributors can be found on the article history page. ::

free-wiki-softwarefree-software-programmed-in-phpfree-content-management-systems