Maandelijks archief: januari 2013

WordPress database prefix wijzigen

Voor het wijzigen van de WordPress database prefix zijn verschillende plugins beschikbaar. Deze plugins wijzigen echter niet altijd alle prefixes. De WordPress database prefix wordt namelijk naast in de tabel namen ook gebruikt in de ‘options’ en ‘usermeta’ tabellen. Jan Egbert tipte me daarom over de volgende SQL query:

UPDATE wp_usermeta SET meta_key = REPLACE(meta_key, 'wp_', 'nieuweprefix_') WHERE meta_key LIKE 'wp\_%';

Via een aantal andere websites kwam ik er achter dat ook de ‘options’ tabel de WordPress database prefix wordt gebruikt. Daarom zal waarschijnlijk ook de volgende query uitgevoerd moeten worden:

UPDATE wp_options SET option_name = REPLACE(option_name, 'wp_', 'nieuweprefix_') WHERE option_name LIKE 'wp\_%';

Bovenstaande queries gaat echter fout zodra de WordPress database prefix terug komt in de optie naam of de user meta key.

umeta_id user_id meta_key meta_value
1 1 wp_pronamic_wp_version 3.5

Zal na het uitvoeren van de query gewijzigd worden naar:

umeta_id user_id meta_key meta_value
1 1 nieuweprefix_pronamic_nieuweprefix_version 3.5

De “Change DB Prefix” plugin lijkt uitgerust zijn met de juiste queries:

http://plugins.trac.wordpress.org/browser/db-prefix-change/tags/1.1/db_prefix.php#L83

Meer informatie:

WordPress update naar 3.5 fatal error

Bij de WordPress update van 3.4.2 naar WordPress 3.5 liepen we bij een aantal websites tegen de volgende foutmelding aan:

HTTP-fout 500 (Internal Server Error): Er is een onverwachte voorwaarde gevonden toen de server het verzoek wilde uitvoeren.

Via de Apache fouten logboek zagen we de volgende foutmelding voorbij komen:

Website 1

[Fri Jan 18 09:14:18.400710 2013] [:error] [pid 17051] [client *.*.*.*:*] PHP Warning:  Missing argument 1 for get_post(), called in /public_html/wp-includes/link-template.php on line 1125 and defined in /public_html/wp-includes/post.php on line 380

[Fri Jan 18 09:17:25.937590 2013] [:error] [pid 17268] [client *.*.*.*:*] PHP Warning:  Division by zero in /public_html/wp-includes/functions.php on line 3237

[Fri Jan 18 09:17:26.019925 2013] [:error] [pid 17144] [client *.*.*.*:*] PHP Fatal error:  Call to undefined function get_current_blog_id() in /public_html/wp-includes/user.php on line 671, referer: http://domainname.tld/wp-admin/update-core.php?action=do-core-upgrade

Website 2

[Fri Jan 18 09:44:52.166372 2013] [:error] [pid 18936] [client *.*.*.*:*] PHP Warning:  Division by zero in /public_html/wp-includes/functions.php on line 3237

[Fri Jan 18 09:44:52.190437 2013] [:error] [pid 18936] [client *.*.*.*:*] PHP Fatal error:  Call to a member function register_handler() on a non-object in /public_html/wp-includes/media.php on line 944

Waardoor deze problemen werden veroorzaakt was een groot raadsel. Ook na een handmatige update van WordPress was het probleem niet opgelost. Uiteindelijk kwamen we tot de ontdekking dat er een caching techniek (XCache) actief was op de hosting omgeving.

Hierdoor werd na de WordPress 3.5 update op de hosting omgeving nog steeds gebruik gemaakt van PHP bestanden/functies uit WordPress 3.4.2. Uiteindelijk hebben we het probleem kunnen oplossen door tijdelijke XCache uit te schakelen.

Het uitschakelen van XCache kan met behulp van de volgende regels in het .htaccess bestand:

php_flag xcache.cacher Off
php_flag xcache.size 0
php_flag xcache.stat Off

Mocht je zelf ook een keer tegen onverklaarbare foutmeldingen aanlopen na een WordPress update dan is het wellicht goed om eens na te gaan welke caching technieken actief zijn.

Handige documentatie website DocHub

Sinds collega Leon Rowland bij Pronamic aan het werk is worden we dagelijks getrakteerd op handige tools. Zo werden we recent gewezen op de DocHub website (http://dochub.io/). DocHub is een handige website gemaakt door Rafael Garcia om direct documentatie te vinden over CSS, HTML, JavaScript, DOM, jQuery, PHP en Python. Helaas staat WordPress hier nog niet tussen, maar wellicht wordt deze nog toegevoegd.