Billets avec le tags ‘PHP’
Compiler et installer l’extension Runkit pour PHP sur Mac OS X
Je parlais récemment sur ce blog de mon besoin de l’extension Runkit afin de supprimer une constante en PHP. Après plusieurs heures a essayer de compiler l’extension sur mon MacBook, j’avais finalement abandonné temporairement.
Ayant remplacé le binaire php par celui de Marc Liyanage, j’ai essayé de nouveau de compiler de Runkit sur mon MacBook et là, oh surprise, ça fonctionne
Pour les intéressés, je vous mets la démarche ci-dessous.
Mac OS Leopard, PHP et GD
En voulant utiliser pChart, une librairie en PHP pour la création de graphiques, je me suis aperçu que la version de PHP5 fournie de base avec Mac OS 10.5 n’a pas l’extension GD d’activée.
Heureusement, j’ai trouvé une solution sur les forums Entropy.ch qui consiste à remplacer le binaire php de Leopard par le binaire de Marc Liyanage. Ce n’est peut-être pas l’un des meilleures solutions (quoique…) mais c’est la plus rapide donc ça me va
Supprimer une constante en PHP
Supprimer une constante en PHP, voilà une idée bien bizarre ! Effectivement, si l’on veut modifier ou supprimer une constante alors il ne devrait pas s’agir d’une constante mais d’une variable. Je suis tout à fait d’accord sur ce point !
Alors pourquoi vouloir supprimer une constante ? J’ai pris l’habitude d’écrire des tests unitaires pour les logiciels que je développe. Cela me permet de m’assurer qu’ils fonctionnent correctement et de faire évoluer le logiciel de façon plus ou moins importante sans « casser » le reste de l’application. Le problème c’est que j’ai un fichier qui défini une constante. Pour les tests sur ce fichier, je définis une constante à une valeur particulière mais dans les autres fichiers de tests cette constante doit reprendre sa valeur normale… L’idée ici est donc de supprimer la constante à la fin du fichier de tests pour permettre de la redéfinir dans les autres.
Upload de fichier avec barre de progression en PHP
Il y a une petite nouveauté dans PHP 5.2 qui est passée un peu inaperçu, c’est la possibilité de suivre l’avancement de l’upload d’un fichier.
Je me suis un peu amusé à tester ça en local et ça marche
Bon, le problème c’est qu’il faut l’extension APC pour pouvoir lire dans le cache PHP. Je vous aurai bien mis une petite démo en ligne mais mon hébergeur n’a pas installé l’extension et je ne peux pas la charger dynamiquement avec la fonction dl.
Du coup, je me demande si ça vaut vraiment la peine d’implémenter ça dans l’E2T… Combien d’hébergeurs propose APC ? Je doute qu’il y en ait beaucoup malheureusement. C’est dommage car le système est assez simple à mettre en place, quelques lignes de code (PHP et Javascript) suffisent.
Je pensais aussi l’utiliser dans FabCMS mais je vais finalement me diriger vers quelque chose en flash…
Mise à jour de mes mods IPB 2.1
Je viens de terminer le portage de mes mods IPB 2.1 vers la version 2.2 d’IP.Board. J’ai mis un peu plus de temps que j’avais prévu, sûrement parce que je n’étais pas très motivé pour le faire. J’en ai profité pour les mettre sur le serveur SVN d’Invision Board France.
Voici donc la liste des mods qui ont été mise à jour :
- MiniChat – MiniChat (ou shoutbox si vous préférez) pour vos forums utilisant AJAX.
- ChatComposant – Permet aux membres de se connecter à un ou plusieurs salons IRC depuis vos forums via une Applet Java.
- Bloc de bienvenue – Plugin pour le portail permettant d’afficher un bloc de bienvenue.
- Liste des forums – Plugin pour le portail affichant un bloc avec la liste des forums.
- Bloc de connexion – Plugin pour le portail permettant de se connecter directement depuis le portail d’IPB.
Une nouvelle mod a fait son apparition Évènements à venir. Elle permet d’afficher un bloc sur le portail IPB avec la liste des évènements à venir.
Il reste également l’E2T qui est actuellement disponible en version beta. Je pense/espère qu’une nouvelle version de développement sortira bientôt (ça dépend de mes collègues Prolag et Youp3 :p).
AJAX et les caractères spéciaux
C’est l’un des plus gros problèmes d’AJAX, les caractères spéciaux. Si votre requête n’utilise pas le même encodage que votre page, tous les caractères spéciaux deviennent des points d’interrogation.
J’avais déjà passé pas mal de temps sur ce problème mais hier soir alors que je mettais ma bdd à jour (pour être compatible avec la nouvelle version de FabCMS), je me suis aperçu que certains caractères avaient été remplacés par le fameux point d’interrogation…
Ce matin, après plusieurs heures de recherches, je suis arrivé à la source du problème. Pour convertir les caractères en UTF-8 (le jeu par défaut de l’objet XMLHttpRequest) j’utilise la fonction php utf8_decode. Or cette fonction ne décode pas tous les caractères mais uniquement ceux qui sont dans le jeu de caractères ISO-8859-1…
Au finale, j’ai trouvé 21 caractères ASCII qui n’étaient pas convertis. Pour corriger ça, j’ai simplement faire un str_replace en attendant de pouvoir vraiment regarder de plus près les modules php mbstring et iconv.
Multi-Upload en php/javascript
Ça y est ! Je viens de terminer la dernière fonctionnalité de mon CMS perso pour la prochaine version. Il s’agit d’un gestionnaire de fichiers. Le fonctionnement est plus ou moins similaire au gestionnaire de pages sauf que cette fois c’est des fichiers physiques. Par chance, j’avais déjà écrit une classe php pour gérer les fichiers physiques… sur un FTP distant. Comme je n’en ai plus besoin (les images et mon site sont chez le même hébergeur), j’ai dû écrit une nouvelle classe pour un dossier qui serait disponible localement.
Une des fonctions du gestionnaire est bien sûr de pouvoir envoyer des nouveaux fichiers. Le bût d’un CMS est normalement de pouvoir gérer tout son site via une interface web, il faut donc quelque chose d’assez ergonomique et rapide. Souvent le problème pour ce genre de fonction c’est l’upload de plusieurs fichiers. Si votre formulaire ne propose d’uploader qu’un seul fichier, cela va vite devenir chiant. Il y a bien une solution qui consiste à afficher plusieurs champs « fichier » dans la page mais nous allons être limité avec le temps d’exécution de php. Vous pourrez donc au maximum uploader que 2-3 fichiers en même temps…
Heureusement, il existe une autre solution : l’excellente classe javascript MultiUpload de Nem. Vous saisissez les fichiers à envoyer et seulement après vous validez le formulaire. Les fichiers seront envoyés un par un mais sans intervention de la part de l’utilisateur. Bien sûr, il faut toujours saisir les fichiers un par un mais ce n’est pas gênant pour une quantité raisonnable de fichiers (moins de 20).
Il reste maintenant plus que quelques petits détails ainsi que mettre à jour mes modules et je pourrais mettre à jour mon site
Relay, un gestionnaire de fichiers web 2.0

Il y a quelques semaines, alors que je codai un nouveau gestionnaire de pages pour mon CMS perso, j’ai découvert Relay, une nouvelle application web 2.0.
Relay permet de gérer ses fichiers et dossiers. La nouveauté c’est qu’il utilise AJAX, ce qui le rend bien plus ergonomique que les autres applications du même style.
Envie de déplacer un fichiers ? Rien de plus simple, il suffit de cliquez dessus et de le déposer là où vous souhaitez.
Relay est actuellement disponible en version 0.1 beta. Il nécessite au minimum PHP 4, MySQL 4, Perl 4.8.0 et Apache (ou IIS).