WordPress 2.9
Så er der ganske begivenhedsløst opgraderet til wordpress v2.9.
Opdatering 12-01-2010: Og nu er der opgraderet til v2.9.1.
Lidt af hvert fra hverdagen hos Michael, Kamilla, Marie og Katrine Schøler
Så er der ganske begivenhedsløst opgraderet til wordpress v2.9.
Opdatering 12-01-2010: Og nu er der opgraderet til v2.9.1.
Så kører dette site med wordpress 2.8 (opgraderet fornyligt, og iøvrigt helt uden problemer) og nu også med PHP 5.3.0 som udkom dags dato.
PHP 5.2.1 til 5.3.0 opgraderingen var langt fra problemfri, så her følger lige en uddybning af de skridt der var nødvendige for at gennemføre opgraderingen til evt. gavn for andre.
Start med at tage en backup af ALT. Både din apache installation, mysql installation + export af alle data, din php installation og din htdocs mappe. Så er du rimelig godt stillet skulle alt fejle.
Check om MySQL password tilstanden kører med den gamle eller den nye password-længde:
Hvis din MySQL daemon kører som en service så stop den.
Start “mysqld.exe –skip-grant-tables” fra en kommando prompt.
I en ny kommando prompt skal du nu starte “mysql.exe -u root”, og indtast så følgende:
c:\mysql\bin>mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 5.0.27-community
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> select PASSWORD('helloworld');
+----------------------------+
| PASSWORD('helloworld') |
+----------------------------+
| 6c755a9e66debe8a |
+----------------------------+
1 row in set (0.02 sec)
Hvis OG KUN HVIS du ser ovenstående resultat anvender din mysql installation den gamle password-længde, og du skal derfor opgradere dine privilege tabeller. Kig efter i script mappen i din mysql rodmappe, her bør du kunne finde filen “mysql_fix_privilege_tables.sql”. Kopier denne fil ind i mysql/bin mappen, og start så mysql.exe med følgende parametre fra en kommando prompt:
c:\mysql\bin>mysql -u root --force mysql < mysql_fix_privilege_tables.sql ... ERROR 1060 (42S21) at line 282: Duplicate column name 'Create_routine_priv' ERROR 1060 (42S21) at line 283: Duplicate column name 'Create_routine_priv' ERROR 1060 (42S21) at line 284: Duplicate column name 'Create_routine_priv' ERROR 1060 (42S21) at line 289: Duplicate column name 'Alter_routine_priv' ERROR 1060 (42S21) at line 290: Duplicate column name 'Alter_routine_priv' ERROR 1060 (42S21) at line 291: Duplicate column name 'Alter_routine_priv' ERROR 1060 (42S21) at line 293: Duplicate column name 'Execute_priv' ERROR 1060 (42S21) at line 294: Duplicate column name 'Execute_priv' ERROR 1060 (42S21) at line 306: Duplicate column name 'max_user_connections' @hadCreateUserPriv:=1 ... ERROR 1060 (42S21) at line 315: Duplicate column name 'Create_user_priv'
Ignorer alle advarsler og fejlbeskeder der kommer efter at have afviklet kommandoen. Alt er godt.
Nu bør du kunne se en længere hash-værdi for passwords i mysql klienten:
c:\mysql\bin>mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 5.0.27-community
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> select PASSWORD('helloworld');
+-------------------------------------------+
| PASSWORD('helloworld') |
+-------------------------------------------+
| *D35DB127DB631E6E27C6B75E8D376B04F64FAF83 |
+-------------------------------------------+
1 row in set (0.00 sec)
Slutteligt skal du resette alle dine mysql bruger passwords. Typisk har man kun root brugeren oprettet til en simpel apache/wordpress installation, men har du selv oprettet flere brugere skal du huske at opdatere disse. Dette gøres således:
c:\mysql\bin>mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 5.0.27-community
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> UPDATE mysql.user SET Password=PASSWORD('myNewPw') WHERE User='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
Hvis du benytter mysql som en service, luk så mysqld.exe ned, og genstart din daemon service igen.
Stop din apache daemon.
Omdøb din gamle php mappe til fx php521.
Opret en ny php mappe og kopier alle filerne fra den nye PHP 5.3.0 distribution herind. Du skal hente VC60 udgaven til apache, da det er den eneste der fungerer hertil. Jeg valgte Thread safe udgaven der kan hentes herfra.
Slet dine gamle php.dll og lib filer fra din apache/bin mappe (disse kan ved nyere installationer også være placeret direkte i php mappen, i så fald kan du springe dette punkt over). Kopien af din gamle php.ini skal du lige holde fast i, for der skal muligvis skrues på nogle indstillinger i den php.ini-production der medfølger PHP 5.3.0 der er specifkke for din gamle opsætning der ikke dækkes af denne opsætningsgennemgang.
Kopier php.ini-production filen ind hvor din gamle php.ini lå og omdøb filen til php.ini.
Følgende værdier skal ændres i php.ini filen (husk at checke om du evt. selv har sat yderligere tilpassede værdier i din gamle php.ini):
short_open_tag = On zlib.output_compression = On post_max_size = 16M extension_dir = "C:\php\ext\" (Sæt til stien for din php installation!) mysql.default_port = 3306 mysql.default_host = localhost mysqli.default_host = localhost
Følgende extensions er rare at have aktiveret pr. default i php.ini (og visse er påkrævet af wordpress og mysql):
extension=php_exif.dll extension=php_gd2.dll extension=php_gettext.dll extension=php_imap.dll extension=php_mbstring.dll extension=php_ming.dll extension=php_mssql.dll extension=php_mysql.dll extension=php_mysqli.dll extension=php_openssl.dll extension=php_pdo_mssql.dll extension=php_pdo_mysql.dll extension=php_soap.dll extension=php_sockets.dll extension=php_sqlite.dll extension=php_xmlrpc.dll extension=php_xsl.dll extension=php_zip.dll
Start nu din apache daemon igen.
Placer en fil i htdocs mappen med følgende indhold (navngiv f.eks. phpinfo.php):
<?php phpinfo(); ?>
Åben nu filen i din browser, f.eks. fra adressen http://localhost/phpinfo.php, eller hvor du nu har placeret filen.
Check at følgende extensions er aktiverede: gd2, gettext, mysql, mysqli og mysqlnd.
Placer nu en testdb.php fil i din htdocs mappe med følgende indhold (jf. det login du har opdateret i mysql, eller som du iforvejen har anvendt i din opdaterede mysql installation):
<?php
$link = mysql_connect(
'localhost:3306',
'root',
'myNewPw'
);
if (!$link) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>
Check at http://localhost/testdb.php viser teksten “Connected successfully”.
Så skulle du være klar, og din wordpress kører nu med PHP 5.3.0 og en ny mysql password authentication metode.
Det er da helt fornøjeligt at konstatere at vores blog og online fotoalbum er kompatibel med den seneste Internet Explorer 8 fra Microsoft. Sig endelig til hvis du opdager noget der ikke fungerer efter hensigten.

Pyyyyyyyyhha… Det var sq’ nervepirrende!
For en time siden påbegyndte jeg omlægning fra ISO-8859-1 til UTF-8 enkodning af denne hjemmeside. Og hvorfor er det så vigtigt? Jo, det er det fordi der dags dato også er blevet opgraderet WordPress version fra 2.6.5 til version 2.7. Den nye version 2.7 kunne ikke li’ ISO-8859-1 enkodningen der tidligere blev anvendt, hvilket dog kun gav sig udslag i en enkelt RSS-feed læser i administrationsinterfacet. Desuden er UTF-8 et større tegnsæt at anvende, og det var i sin tid en fejl der overhovedet blev sat ISO-8859-1 idrift på denne side.

Sådan skete omlægningen, der teoretisk set burde være helt ens for uanset din version af WordPress:
En stor tak til Jakob Kruse for hjælpen iøvrigt!