PHP 5.1 sous windows : où est passé sqlite?

    11:25 26 11 2005

J’ai passé une partie de ma journée d’hier à préparer et compiler WAMP5 1.4.6 avec la dernière release de PHP, la très attendue 5.1.

Au départ, tout me semblait normal, une mise à jour sans problèmes jusqu’à ce que je teste SQLitemanager et là, page banche!
Que se passe t’il? La dernière version de cette application (1.1.3) serait-elle bugée? Je mets donc le nez dans le code et là, je me rends compte qu’il ne s’agit pas d’un problème de SQLitemanager mais que tout simplement le support de SQLite n’est plus activé dans PHP 5.1.

Après un coup d’oeil à l’annonce de la sortie de PHP 5.1, je vois un lien vers un guide de mise à jour proposé sur le site php.net.

C’est dans ce guide que je découvre que le support natif de SQLite n’est plus activé par défaut et se base maintenant sur PDO :

http://www.php.net/README_UPGRADE_51.php#db3

Pour réactiver le support de SQLite natif, il faut donc activer PDO (qui bizarrement n’est plus activé par défaut dans cette version Windows alors qu’elle l’était dans les versions RC), activer le support SQlite de PDO puis activer l’extension php_pdo :

extension=php_pdo.dll
extension=php_pdo_sqlite.dll
extension=php_sqlite.dll

A noter que le driver SQLite est donc maintenant passé en version 3.



Premier point sur PHP6 par le PHP Group

    14:56 23 11 2005

Suite à la réunion d’une partie du PHP Group lors du forum PHP 2005 qui se déroulait à Paris (à noter que le PHP Group ne s’était pas réuni comme cela depuis 2000), une liste des fonctionnalités à prévoir pour PHP6 a été publiée par Derick :

compte rendu

Je n’ai pas encore eu le temps de tout lire, mais certains points semblent très intéressants… à suivre.



Windows au pays des Timestamps

    00:44 18 11 2005

Beaucoup de personnes pensent, à tort, que tous les développements PHP (ne faisant pas d’appels système) s’executent de façon identique sur Unix ou Windows. Un exemple des légères différences que l’on peut rencontrer est la getion des timestamps Unix.

Un timestamp Unix est une unité de mesure du temps. Il s’agit du nombre de secondes écoulées depuis le 1er Janvier 1970 à 0h00. Ce format à été crée, au début de Unix, afin de palier aux problèmes de mémoire qui, bien avant que l’on ait des pc avec 1 Go de RAM, était très limitée (à l’époque, la mémoire se mesurait en octets). Ainsi, les dates consommaient des espaces mèmoire très réduits en sachant pertinement que plus on avancerait dans le temps et plus l’espace necessaire grandirait mais également que la mémoire disponible sur les machines serait de plus en plus importante.

En partant de ce concept, on en déduit rapidement qu’il n’est pas possible d’exprimer une date antérieure à 1970 avec un timestamp à moins d’utiliser une valeur négative.

Or Unix (ou Linux) sait très bien gérer ces valeurs négatives. un exemple simple :

<?php

echo mktime(0,0,0,1,1,1969);

?>

Ce petit script, qui génère le timestamp du 1er Janvier 1969 à 0h00, sous Unix vous affichera

-31539600

Maintenant testez ce même script sous Windows. Voilà l’affichage que vous aurez :

Warning: mktime() [function.mktime]: Windows does not support negative values for this function in c:\wamp\www\test\timestamp.php on line 3
-1

Windows ne sait pas gérer les valeurs négatives de timestamps! Et ceci peut entrainer de très grosses incohérences sur vos développements.

Conclusion : si vous souhaitez faire des développements multi plateformes, pensez à tester régulièrement votre travail sur toutes les plateformes que vous souhaitez supporter afin d’éviter de mauvaises surprises de dernière minute.



Les short open tags

    09:13 14 11 2005

Une des options disponible dans le ficher de configuration de PHP, bien connu sous le nom de php.ini, est la possibilité d’activer (ou de desactiver) les short open tags :

short_open_tags = On (ou Off)

Les shorts open tags ont au départ été prévus…bah pour pas grand chose, tout simplement ouvrir son code PHP avec la balise <? au lieu d’utiliser la balise <?php. En soi, on pourrait se dire que cela est pratique, mais dans les faits l’utilisation des short open tags pose des problèmes.

En effet, les normes évoluent, le HTML est mort, vive le XHTML! Et avec cette nouvelle norme basée sur du XML, sont apparues de nouvelles balises. Il faudra nottament maintenant utiliser la balise <?xml version= »1.0″ …. pour ouvrir son document. Et c’est là que les short open tags viennent poser problème.
Avec les short open tags activés, un telle balise va être interprétée comme une ouverture de PHP, le code ‘xml version= »1.0″‘ va donc être parsé et générer une « syntax error ». Il ne sera donc pas possible de faire tourner des scripts au format XHTML sur un serveur ayant les short_open_tags activés.

La solution pour un code compatible va consister à utiliser les open tags traditionnels <?php et d’intégrer vos balises d’ouverture de fichier XHTML directement dans votre PHP sous la forme d’un echo :

<?php
echo ‘<?xml version= »1.0″ …..>’;
?>

De cette façon, votre code pourra tourner quelque soit la configuration de votre serveur :-)

J’en profite pour signaler que la dernière version de WAMP5 (1.4.5) est passée en short_open_tags à Off, ce qui a entrainé de nombreux posts sur le forum du site.