XML-RPC bei DokuWiki aktivieren

Um XMP-RPC bei DokuWiki zu aktivieren, geht man zuerst in die Konfigurationseinstellungen:

In den Konfigurationseinstellungen muss man dann in den Abschnitt Authentication:

Dort gibt es ganz unten dann den Abschnitt über XML-RPC:

Jetzt muss man einen Haken neben “Enable the remote API system. This allows other applications to access the wiki via XML-RPC or other mechanisms.” setzen.

Als nächstes muss man in der Textzeile darunter diejenigen User auflisten, die Zugriff auf XML-RPC haben sollen. Also anstelle von “!!not set!!“.

Jetzt nur noch am Ende der Seite auf Save drücken und XML-RPC ist aktiviert.

Um zu überprüfen, ob XML-RPC aktiviert ist, reicht ein curl Kommando im Terminal. Wenn man z.B.

curl --request POST  --data '<?xml version="1.0" ?><methodCall><methodName>dokuwiki.getVersion</methodName></methodCall>' http://127.0.0.1/lib/exe/xmlrpc.php

abschickt, dann müsste eine Antwort dieser Art auftauchen

<?xml version="1.0"?>
 <methodResponse>
   <fault>
     <value>
       <struct>
         <member>
           <name>faultCode</name>
           <value><int>-32603</int></value>
         </member>
         <member>
           <name>faultString</name>
           <value><string>server error. not authorized to call method dokuwiki.getVersion</string></value>
         </member>
       </struct>
     </value>
   </fault>
 </methodResponse>

Die Antwort zeigt, dass XML-RPC aktiv ist, aber die entsprechenden Rechte für eine Abfrage fehlen. Dazu müsste man noch die Cookies beim Request anpassen.

HTML und PHP Code in DokuWiki aktivieren

Standardmäßig kann man in DokuWiki keinen HTML oder PHP Code ausführen. Möchte man also z.B. die PHP Funktion phpinfo(); auf einer Seite ausführen, muss man dafür etwas tun.

Der entsprechende Code zum aufrufen der phpinfo(); würde z.B. so aussehen:

<php>phpinfo();</php>

Zwischen den Tags <php> und </php> kann man beliebigen Code ausführen.

Um die Ausführung der Funktion (bzw. PHP Code im Allgemeinen) zu aktivieren, muss in der Datei conf/local.php die folgende Zeile einfügt bzw. angepasst werden:

$conf['phpok'] = 1;

Ist der Wert von $conf[‘phpok’] auf 1, sollte man die Funktion phpinfo(); ausführen können.

Wenn der Wert von $conf[‘phpok’] allerdings auf 0 ist, dann sieht man auf der entsprechenden Seite nur einen farblich hervorgehobenen Text:

Quellen: