Mediawiki Sitemap erstellen

Aus Laub-Home Wiki

Hier die kurz Anleitung zum erstellen einer Sitemap für Google.

cd /srv/httpd/vhosts/wiki.vhost.de/htdocs/
mkdir sitemap
php maintenance/generateSitemap.php --fspath sitemap --server http://wiki.domain.tld --urlpath sitemap/

Sitemap automatisch einmal am Tag erstellen

/usr/local/sbin/wikisitemap.sh

#!/bin/bash
cd /srv/httpd/vhosts/wiki.vhost.de/htdocs/
php5 maintenance/generateSitemap.php --skip-redirects --fspath sitemap --server http://wiki.domain.tld --urlpath sitemap/ >/dev/null
chmod +x /usr/local/sbin/wikisitemap.sh
ln -s /usr/local/sbin/wikisitemap.sh /etc/cron.daily/wikisitemap

Problem bei php suhosin Verwendung

Wenn man PHP mit dem suhosin Modul nutzt kommt es zu folgender Fehlermeldung, da suhosin es verbietet Skripten das Memory Limit anzupassen:

ALERT - script tried to disable memory_limit by setting it to a negative value -1 bytes which is not allowed (attacker 'REMOTE_ADDR not set', file 'unknown') 

Um den Fehler zu eliminieren, muss man den memory-limit Wert von max nach default in der maintenance/Maintenance.php anpassen:
maintenance/Maintenance.php

'memory-limit', 'default'
        public function memoryLimit() {
                $limit = $this->getOption( 'memory-limit', 'default' );
                $limit = trim( $limit, "\" '" ); // trim quotes in case someone misunderstood
                return $limit;
        }

Fehler nach Upgrade auf MariaDB und Debian Stretch

ich bekam nach dem Upgrade auf Debian Stretch beim Generieren folgende Fehlermeldung:

php maintenance/generateSitemap.php
0 ()
	/srv/httpd/vhosts/www.laub-home.de/htdocs/sitemap-wikidb-NS_0-0.xml.gz
[40c2e64c921d3f448fac4a4d] [no req]   Wikimedia\Rdbms\DBQueryError from line 1075 of /srv/httpd/vhosts/www.laub-home.de/htdocs/includes/libs/rdbms/database/Database.php: A database query error has occurred. Did you forget to run your application's database schema updater after upgrading? 
Query: SELECT  user_name,up_value  FROM `user` LEFT JOIN `user_properties` ON ((user_id = up_user) AND up_property = 'gender')   WHERE user_name = '𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁𨮁喃'  
Function: GenderCache::doQuery/MediaWikiTitleCodec::getNamespaceName
Error: 1300 Invalid utf8 character string: 'F0A8AE' (localhost)

Backtrace:
#0 /srv/httpd/vhosts/www.laub-home.de/htdocs/includes/libs/rdbms/database/Database.php(933): Wikimedia\Rdbms\Database->reportQueryError(string, integer, string, string, boolean)
#1 /srv/httpd/vhosts/www.laub-home.de/htdocs/includes/libs/rdbms/database/Database.php(1269): Wikimedia\Rdbms\Database->query(string, string)
#2 /srv/httpd/vhosts/www.laub-home.de/htdocs/includes/cache/GenderCache.php(171): Wikimedia\Rdbms\Database->select(array, array, array, string, array, array)
#3 /srv/httpd/vhosts/www.laub-home.de/htdocs/includes/cache/GenderCache.php(81): GenderCache->doQuery(string, string)
#4 /srv/httpd/vhosts/www.laub-home.de/htdocs/includes/title/MediaWikiTitleCodec.php(91): GenderCache->getGenderOf(string, string)
#5 /srv/httpd/vhosts/www.laub-home.de/htdocs/includes/Title.php(995): MediaWikiTitleCodec->getNamespaceName(integer, string)
#6 /srv/httpd/vhosts/www.laub-home.de/htdocs/includes/Title.php(1428): Title->getNsText()
#7 /srv/httpd/vhosts/www.laub-home.de/htdocs/includes/Title.php(1440): Title->prefix(string)
#8 /srv/httpd/vhosts/www.laub-home.de/htdocs/includes/Title.php(1753): Title->getPrefixedDBkey()
#9 /srv/httpd/vhosts/www.laub-home.de/htdocs/includes/Title.php(1882): Title->getLocalURL(string)
#10 /srv/httpd/vhosts/www.laub-home.de/htdocs/maintenance/generateSitemap.php(554): Title->getCanonicalURL()
#11 /srv/httpd/vhosts/www.laub-home.de/htdocs/maintenance/generateSitemap.php(331): GenerateSitemap->generateLimit(string)
#12 /srv/httpd/vhosts/www.laub-home.de/htdocs/maintenance/generateSitemap.php(203): GenerateSitemap->main()
#13 /srv/httpd/vhosts/www.laub-home.de/htdocs/maintenance/doMaintenance.php(111): GenerateSitemap->execute()
#14 /srv/httpd/vhosts/www.laub-home.de/htdocs/maintenance/generateSitemap.php(564): require_once(string)
#15 {main}

Dies konnte wie hier beschrieben durch ein ändern der USER Tabelle gelöst werden:

mysql -uroot
ALTER TABLE user CONVERT TO CHARACTER SET binary;

Quellen