Tweede hulp bij wiki's

Uit musys
Ga naar: navigatie, zoeken

serverfout 500

wiki doet niets meer; serverfout 500

  • Als een wiki 'niets' meer doet is er meestal iets mis met LocalSettings.php, een puntkomma vergeten kan al voldoende zijn.

Backup wiki-data

  1. phpMyAdmin | database | Export
  2. LocalSettings.php
  3. images/*/*

upgrade mediawiki

Cruciaal is het draaien van update.php in de ./maintenance map

  • SemanticMediawiki: Special:SMWAdmin
  • FlaggedRevisions: update.php na opnemen van
#require( "$IP/extensions/FlaggedRevs/FlaggedRevs.php" );

Foutmelding

Na (gedeeltelijke) installatie van Semantic Mediawiki wordt onderstaande fout gegeven bij het bekijken van de hoofdpagina:

MediaWiki internal error.

Exception caught inside exception handler

Remedie: Ga naar Special:SMWAdmin en gebruik de knop Initialize or upgrade tables

changecollation.php

Om de collaties van alle tabellen te corrigeren (ze staan vaak op latin1_swedish_ci kun je onderstaand scriptje gebruiken.

<?php
 $mydbname = 'databasename';
 $myhost = 'localhost';
 $myuser = 'username';
 $mypass = 'password';  
 $mycollation = 'utf8_general_ci';  
 
 $connection = mysql_connect( $myhost, $myuser, $mypass ) 
   or die( "cannot connect to server at $myhost" );

 $db = mysql_select_db( $mydbname ) 
   or die( "cannot select database $mydbname" );
 
 $result = mysql_query( 'SHOW TABLES' );
 while( $tables = mysql_fetch_array( $result ) ) {
   foreach ( $tables as $key => $value ) {
     mysql_query( "ALTER TABLE $value COLLATE $mycollation" );
   }
 }
 echo "The collation of database $mydbname was changed to $mycollation.";
?>

changeprefix.php

Bij importeren/exporteren van mediawiki-databases kun het nuttig/nodig zijn om alle prefixen van de tabellen te veranderen:

<?php
 $mydbname = 'databasename';
 $myhost = 'localhost';
 $myuser = 'username';
 $mypass = 'password';  
 $oldprefix = 'old_';
 $newprefix = 'new_';

 function replace_prefix( $s, $oldprefix, $newprefix ) {
   if( $oldprefix=="" )  
      return $newprefix . $s;
   $pos = strpos( $s, $oldprefix );
   if( $pos === false ) {
     $s = "";
   } else {
     $s = substr( $s, $pos + strlen($oldprefix) );
     $s = $newprefix . $s;
   }  
   return $s;
 }

 $connection = mysql_connect( $myhost, $myuser, $mypass ) 
   or die( "cannot connect to server at $myhost" );

 $db = mysql_select_db( $mydbname ) 
   or die( "cannot select database $mydbname" );

 $sql = "SHOW TABLES FROM $mydbname";
 $qresult = mysql_query( $sql );
 if ( !$qresult ) 
 {
   echo "DB Error, could not list tables \n";
   echo 'MySQL Error: ' . mysql_error();
   exit;
 }
 while ( $row = mysql_fetch_row( $qresult ) ) 
 {
   $oldname = $row[0];
   $newname = replace_prefix( $oldname, $oldprefix, $newprefix );
   if( $newname != "" )
   {
     $sql  = "RENAME TABLE $oldname TO $newname";
     $result = mysql_query( $sql );
     if (!$result) {
       $r = "error";
     } else {
       $r = "OK";        
     }
     echo "Changing $oldname -> $newname : $r\n";
   } else {
     echo "**** $oldname: not found **** \n";     
   }
   mysql_free_result($result);
 }
 mysql_free_result($qresult);
 echo "Done.\n"
?>