Familien Schøler’s blog

Lidt af hvert fra hverdagen hos Michael, Kamilla, Marie og Katrine Schøler

Wordpress 2.8 og opgradering fra PHP 5.2.1 til 5.3.0

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.

MySQL opsætning

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.

Installation af PHP5.3.0

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.

W.I.T.S. projektet er igangsat

Trenden startede i Egå med at jeg smed en version 0.1beta Working-In-The-Sun, eller W.I.T.S, arbejdsplads op. Som det ses, er det tydeligvist indført lidt intermistiske, og ganske midlertidige, løsninger for at undgå at få sol ind på fremvisningsenheden, men som sådan fungerede denne “proof-of-concept” version ganske fint:

W.I.T.S. v0.1 beta

Herfra varede det ikke længe inden version 1.0 stod klar til brug. Blandt forbedringerne er at nævne sikring imod strømforsyningsnedsmeltning, og ikke at forglemme indførslen af en mere intuitiv og brugervenlig afskærmningsteknologi:

W.I.T.S. v1.0

Succes’en bredte sig hastigt på Internettet, og der meldtes ganske få minutter efter udgivelsen af W.I.T.S. v1.0 om branch projekter så langt væk på kloden som i København.

Se således dette ganske imponerende eksempel, hvor der endda er inddraget en ekstra stor fremvisningsenhed:

W.I.T.S. v1.0 branch 1

Her er endnu en afart af W.I.T.S. hvor det bør bemærkes at der er tilføjet en ekstra duft dimension i form af adskillige dekorative beplantningsenheder:

W.I.T.S. v1.0 branch 2

Det skal blive spændende at følge projektets videre fremdrift, og at høre om brugeroplevelser samt evt. nærmest uundgåelige fejl samt fejlrettelsesbestræbelser hertil.

Har du rebootet din Citroën C5 idag?

Har du rebootet din bil idag? Det har jeg nemlig fået gjort. Det forholder sig nemlig sådan, at da jeg skulle hjem fra kontoret her i dag, var hændelsesforløbet cirka som følger:

1. Gik hen til P-automaten for at betale. Hey 0,- kroner på grund af Grundlovsdag. Bonus, succes, super!

2. Låste bilen op med den elektroniske nøgle, og smed taske mv. i bagagerummet.

3. Satte mig ind i bilen, satte nøglen i og drejede den rundt…

4. Det begyndte at regne.

5. Lyden af startmotoren der forgæves forsøgte at rende bilen igang rungede igennem lyden af den begyndende trommen af kraftigere og kraftigere regndråber mod biltaget.

6. Tanken slår mig, at jeg var i Billund i går, og benzinindikatoren begyndte at lyse på turen i morges fra Egå og ind til kontoret. Men, nej det burde altså ikke være på grund af manglende benzin. Der burde være til 50 kilometer mindst endnu. Nu vel…

7. Jeg gik godt grumlende afsted i den silende regn imod nærmeste tankstation F24 (kun ca. 500 meter væk heldigvis).

8. Godt gennemblødt hiver jeg fat i F24’s absolut sidste reservedunk, og får fyldt 7 liter benzin på den.

9. Efter endnu en utilfredsstillende gåtur gennem den tiltagende regn fik jeg så hældt benzin på vognen, og satte mig påny ind bag rattet. Nøglen i, dreje rundt… Ingenting. Igen bare lyden af en opgivende startmotor.

10. Jeg fik ringet til Falck og sagt at de da gerne lige måtte smutte forbi og hjælpe mig hjem, og fik her af vide at hvis bilen virkelig var rendt helt tør, så var en enkelt reserveoptankning ikke altid nok, så jeg kunne forsøge i ventetiden med at hælde en dunk ekstra på. De ville sms’e mig med hvornår de kunne komme og hjælpe. Super! Og alligevel… Det betyder jo at jeg skal…

11. … ud på endnu en våd tur til tankstationen, denne gang blev det til en løbetur (Mythbusters har bevist at man bliver mindre våd hvis man løber). Dunken blev fyldt, og jeg løb tilbage til bilen. Under tilbageløbeturen fik jeg en sms om at Falck var på pletten indenfor 15 minutter. Fin service! Kan anbefales.

12. Endnu en påfyldning fandt sted. Nu med mindst 14 liter i tanken var forventningen stor til at bilen kunne starte. Efter at have drejet nøglen halvt om viste benzinmåleren nu 1/4 tank. Det virker nu! Men nej… Igen kun den nedslående lyd af en ubalanceret magtkamp mellem en startmotor og en absolut ikke samarbejdsvillig benzindreven bilmotor. Og hov, en fejlbesked viste sig i on-board computeren: “ENGINE IMMOBILIZER FAULT”.

13. Et opslag i bil-manualen ledte til forståelsen af denne fejlbesked som værende: “Motorlås, bilen har ikke genkendt den elektroniske nøgle”. Men men… Jeg kan jo låse, låse op og åbne/lukke vinduerne ved at trykke på bilnøglens forskellige knapper uden problemer?!

14. Falck-manden ankom, og så lidt misfornøjet ud over det hyggelige danske sommervejr, men var ellers ved højt humør. Han havde haft ringet forinden og jeg fortalte om fejlen i displayet, så under køreturen frem til mig undersøgte han sagen med nogle servicefolk over telefonen, og løsningen burde være så simpel som at skifte batteriet i nøglen. Så gjort…

15. … var det stadig ikke muligt at tænde bilen. Samme fejl i displayet.

16. Falckmanden prøvede så at pille stelforbindelsen af bilbatteriet, og lod den stå uden strøm i 3-4 minutter.

17. Vupti – nu kunne bilen startes. Reboot gennemført. 

18. Og – i samme sekund, holdt det op med at regne!

calvin-angry