Suite à l'émergence des frameworks web, beaucoup d'équipes de développement ont décidé de leur utilisation sans toujours bien réaliser les tenants et aboutissants liés la démarche, croyant souvent avoir enfin trouvé une méthode miracle pour produire vite et bien. Il peut en résulter de sévères déconvenues, quel que soit le framework, le langage ou la plateforme retenus.
Concernant Symfony, il en va de même ; et si on peut bien entendu trouver énormément d'avantages à son utilisation sur un projet, il faut également bien avoir conscience des contraintes qu'un développement sur sa base implique, sous peine de se retrouver dans le mur assez rapidement.
Il est immédiatement tentant de retenir Symfony pour tout type de projet tellement il est agréable de développer sur sa base. Cependant, pourquoi systématiquement réinventer une roue qui tourne peut-être déjà fort bien ailleurs ? L'idée ici est de s'interroger sur la réelle nécessité de recourir à un développement spécifique ; en effet, même si coder en Symfony est très encadré, il n'empêche que la logique métier est entièrement à définir par l'équipe de développement [1]. Plus particulièrement concernant les problématique de gestion de contenus, le besoin métier sur le projet est-il suffisamment conséquent, ou un CMS comme Drupal, SPIP, ezPublish ou Joomla couvre t-il nativement l'ensemble du périmètre fonctionnel cible ? [2]
Un développement spécifique introduira le plus souvent beaucoup plus d'exigences, de compétences et de compléxité qu'une intégration basée sur un outil de gestion de contenus autonome existant (et digne de ce nom). L'idée est bel et bien de renoncer à se faire plaisir à tout prix pour se situer au plus près de la réalité du besoin.
Bien entendu, je me fais aussi ici l'avocat du diable. Pour avoir joué avec les principaux CMS PHP open source du marché et connaissant la propension naturelle d'un client à enrichir au gré de l'avancement projet le périmètre fonctionnel souhaité [3], je préfère allègrement à titre personnel me baser sur un framework comme Symfony afin de rester agile et parer à toute éventualité. Mais je sais aussi quelles sont mes compétences réelles sur le sujet, et dès qu'une équipe dont je ne cerne pas le niveau entre en ligne de compte, généralement les problèmes commencent. Ça tombe bien, c'est justement l'objet du prochain chapitre 
Non, Symfony ne transformera pas magiquement un mauvais développeur en bon développeur... même s'il peut y contribuer à terme 
Plus sérieusement, le but réel de l'utilisation d'un framework est bel est bien de vous rendre plus efficace et productif, certainement pas de vous compliquer la vie ou de vous faire perdre du temps.
Il faut bien prendre conscience que le temps de montée en compétence sur l'utilisation du framework - déjà naturellement exigeante - requière également pour certains une montée en compétence en programmation tout court. Et cette dernière, si elle peut se faire sur un projet, peut également allègrement le plomber. Un développeur débutant bidouilleur PHP mettra fatalement plus de temps qu'un codeur expérimenté à appréhender l'ensemble des possibilités introduites par PHP5, la programmation orientée objet, les motifs de conception, mais aussi le respect des bonnes pratiques notamment liées au travail collaboratif ou que sais-je encore.
Le risque à court terme est de voir le code du projet grevé dans sa qualité et sa maintenabilité. À moins bien entendu de prendre en compte en amont cette charge inhérente à la formation, mais on connait tous la réalité professionnelle et commerciale du milieu qui est le notre 
Oui, Symfony fait la part belle aux conventions et prémâche énormément le travail redondant à tout projet de type web. La vie des (bons) développeurs est grandement facilitée, et on peut vraiment gagner rapidement beaucoup de temps. Mais une grave erreur serait de sous-estimer la charge liée à l'organisation et la gestion de la vie du projet.
Par exemple, ce n'est pas en mettant plus de développeurs sur un projet Symfony (ou autre d'ailleurs) que celui-ci sera développé plus vite. Au contraire, même ; tout codeur avec un tant soit peu d'expérience professionnelle a déjà rencontré ce type de cas de figure : on vend un projet de 100 jours de développement, on se fixe un retroplanning ambitieux avec une mise en ligne à 20 jours ouvrés, et on staffe donc arithmétiquement cinq développeurs à plein temps en pensant que le résultat sera totalement équivalent au travail qu'aurait fourni un unique développeur en 100 jours de développement pour concevoir l'intégralité du code de l'application résultante.
Bien entendu, c'est illusoire et généralement, le projet se termine sur des dépassements conséquents et le mécontentement du client [4]. Et pour cause, la déperdition d'énergie utilisée à la communication sur le projet est fonction du nombre d'acteurs présents sur ce dernier. Et on peut staffer trois chefs de projet à plein temps pour canaliser tout ça, c'est d'une part économiquement peu viable et d'autre part totalement inefficace, ces derniers devant perdre également beaucoup de temps à se synchroniser entre eux, puis avec les membres de l'équipe.
Non, Symfony n'est pas le remède miracle aux lacunes organisationnelles des structures en charge de la réalisation d'un projet, mais bien un outil exigeant qu'il faut savoir appréhender de la bonne façon en prenant en compte le plus en amont possible ces problématiques. Le gain réel et indiscutable d'efficacité apporté par l'utilisation d'un framework comme Symfony est à ce prix 
[1] Je n'ose pas évoquer ici la notion d'architecte logiciel connaissant la réalité moyenne du monde PHP.
[2] Pour nuancer ce propos, de plus en plus de plugins Symfony tendent à apparaitre pour couvrir ce type de besoins fonctionnels.
[3] Le premier qui me parle du sacrosaint cahier des charges contractuel, je le mords.
[4] Sans parler de la charge de stress portée sur l'équipe, qui du coup va saloper le boulot pour livrer au plus vite.
Hier s'est déroulé le premier eZ Publish developer day à Paris . Cet évènement était organisé par eZ Systems France en marge de la journée partenaires. À l'inverse de la rencontre partenaires, cet évènement était orienté technique et fut très riche (suffit de voir la longueur de ce billet :))
La première surprise fut l'audience puisque nous étions une bonne cinquantaine ! Même si comme le dit Roland Benedetti (Managing Director eZ Systems France), " il se passe quelque chose au niveau d'eZ Publish en France" une telle audience fut une surprise pour tout le monde. Ayant une intervention de prévue en fin d'après midi, c'était aussi un peu de challenge en plus pour moi :-) Il est aussi agréable de pouvoir mettre un visage sur différents noms rencontrés par mail, sur les forums ou via mon blog .
Pendant la première partie de l'après midi, nous avons donc pu écouter Paul Borgermans responsable du eZ Labs (la partie R&D d'eZ Systems) nous présenter les orientations et les nouveautés techniques autour d'eZ Publish 4 et des extensions.
Une version beta devrait sortir d'ici quelques jours alors que la version finale est attendue pour novembre 2007. Comme prévu, la version 4.0 sera un portage de la version 3.10 avec la possibilité d'utilisé les eZ Components dans les extensions.
Une version 4.x devrait sortir en début d'année 2008 qui devrait, elle, apporter beaucoup de nouveautés avec l'intégration réelle de certains Components comme Database , Template et peut être Workflow , Authentication ou Persistent Object . Cette version obligera donc à modifier les templates. L'ancien système de template sera abandonné mais pour faciliter la transition, un utilitaire devrait être fournit pour transformer les templates conçus avec l'ancienne syntaxe vers la nouvelle. Cet utilitaire devrait normalement être capable de transformer 80 à 90% des templates sans problème. Paul assure aussi qu'une priorité du développement est l'amélioration de performances ! À noter que le x de 4.x sera fonction du degré de rupture par rapport à la version 4.0.
Une autre priorité sera la sortie de produits mieux testés, pour cela, l'équipe d'eZ Labs a semble t il mis au point un système de tests poussés basé sur Buildbot et Selenium .
Enfin, Paul nous a confié quelques orientations futures sur le développement, j'ai retenu en vrac :
eZ Publish va donc énormément évolué dans les mois qui viennent, le passage à PHP5 est à la fois une épreuve et une opportunité pour les développeurs.
Paul nous a aussi présenter les nouveautés à venir d'eZ Find , l'extension de recherche pour eZ Publish basé sur le projet Solr . Une nouvelle version stable (1.1) est attendue pour le mois de novembre avec le support "basique" des "facets". Les "facets" sont en fait des propositions automatiques faites à l'internautes permettant de raffiner sa recherche. La plupart des sites de e-commerces proposent cette solution (par exemple rechercher "nikon" sur la FNAC )
Bertrand Maugain nous a aussi fait une démonstration de l'extension eZ Flow, une nouvelle extension qui devrait sortir dans les semaines qui viennent. Il s'agit semble t il d'une surcouche du front site editing qui ajoute des fonctionnalités de paramètrage (ordre, type de template, ...) et le tout soupoudré d'AJAX. Vraiment très impressionnant. J'aurai le temps d'en reparler quand ce sera sorti.
Paul a également fait une courte intervention sur le portage des extensions vers eZ Publish 4. Dans la plupart des cas, ce sera relativement simple et les points à surveiller sont les suivants :
Enfin l'après midi s'est terminé par ma présentation sur quelques expériences et solutions mises en place dans le cadre de mon travail sur des sites à plus ou moins fort trafic. J'ai d'abord fait quelques rappels sur les performances out of the box d'eZ Publish avant d'examiner quelques solutions mises en place pour aller plus loin :
Cette journée a vraiment été très instructive et intéressante mais trop courte. Je regrette d'avoir du partir aussi précipitamment, certaines discussions qui ont suivi cet après midi avaient l'air très intéressantes, vivement le prochain évènement de ce type (peut être un deuxième eZCamp à Lyon ou ailleurs en début d'année prochaine ?).
PHP et MySQL ne font l'objet d'aucune alerte de sécurité dans leurs versions courantes :
PHP 5.2.4 et 4.4.7; MySQL 5.0.45 (communauté) et 5.0.45 (entreprise), 4.1.22, ainsi que 5.1.21-beta. Les mises à jour sont recommandées vers ces versions.
1 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes :
et WordPress

Je suis l'heureux papa depuis quelque jours d'un éléphant PHP. Il se porte bien et apprécie beaucoup la compagnie des étudiants (qui après deux semaine intensive de PHP ont parfois des envies de meurtre vis à vis de ce pauvre éléphant).


Par contre il est un peu polisson et n'a pas put s'empêcher de propager sa belle couleur bleu partout.

Je tiens à remercier Damien de Nexen Service et Vincent Pontier pour ce beau cadeau à la communauté.
ITJungle vient de publié un article apportant quelques informations sur Zend Core for i5/OS, la version compatible avec le System i d'IBM. Zend Core for i5/OS sera basé sur la version 2.5 de Zend Core et apportera quelques nouveautés parmis lesquelles :
Comme on dit dans le jargon, je suis officiellement à l'écoute du marché. Le traditionnel CV est par là, ou encore ici.
Je me débrouille en PHP et avec le framework Symfony, j'aime bien concevoir de chouettes applis qui fonctionnent et qui sont maintenables, j'aime beaucoup les petites équipes agiles, j'adore appliquer les bonnes pratiques de conception et respecter les standards du web. Je place au centre de tout le respect du client et les processus de conception collaborative.
Si vous êtes intéressé,vous pouvez me joindre en passant par la case contact 
Edit : J'ai une extinction de voix carabinée, merci d'éviter le téléphone ou la visioconférence le temps que je me remette d'ici quelques jours 
Les Elephpants PHP de L'AFUP sont passés par chez moi pour se rendre ensuite au Forum PHP 2007 à Paris.
Certains Elephpants un peu pressés d'arriver, ont voyagés en transport Express.
Je suis actuellement en train de compiler les add-ons PHP pour WampServer2 et hier j’étais sur les différentes versions de PHP. J’ai commencé par faire les dernières versions de chaque branche ce qui m’a amené à retravailler sur des vielles versions de PHP4, genre PHP 4.1.2 ou PHP 4.2.3.
C’est trop marrant! Qui se rappelle qu’à l’époque les erreurs s’ouvraient en pop up sur le serveur?
Exemple :
.. et regardez le message d’erreur : “Error parsing ../wampmanager.conf on line 43 in Unknown on line 0″
PHP ne sait même pas où il est à cause d’un simple include.
C’est là qu’on se rend compte que PHP vient de très loin. Arrivé maintenant à un stade vraiment professionnel, il a commencé comme projet étudiant. Cela permet de mieux comprendre les différentes étapes/évolutions qui ont jalonné son parcours…
Un article publié sur le site de Zend, propose d'utiliser un plugin afin d'intégrer Propel avec Zend Framework.
Propel est un framework ORM (Object-Relational Mapping) pour PHP5, qui facilite l'utilisation des bases de données dans des applications PHP.
Un premier article expliquait comment intégrer et utiliser propel dans une application développée avec Zend Framework. Mais la méthode décrite dans cet article ne permet pas à l'application de connaître quel modèle est à utiliser.
Une astuce pour régler ce problème est d'utiliser le système de plugins de Zend Framework, qui permet d'exécuter du code lors de certains événements.
L'article
Ces vidéos sont publiés sur les sites de partagent de vidéo. Ce sont des tutoriels enregistrés, des sessions de conférences, des screencast ou encore des slides de conférences.
N'hésitez pas à nous contacter pour signaler tout media qui mérite d'être ajouté à cette liste.
PHP et MySQL ne font l'objet d'aucune alerte de sécurité dans leurs versions courantes :
PHP 5.2.5 et 4.4.7; MySQL 5.0.45 (communauté) et 5.0.48 (entreprise), 4.1.22, ainsi que 5.1.21-beta. Les mises à jour sont recommandées vers ces versions.
3 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes :
Gallery, WordPress et Xoops
Cette version se contente, et c'est déjà bien, de corriger une soixantaine de bogues dont 7 en rapport avec la sécurité. Autrement dit, il est vivement recommandé de passer à cette version si vous êtes déjà en version 5.2.x.
Pour ceux qui utilisent encore une version antérieure, un petit coup d'oeil aux guides de migration peut être très utile.
N'oubliez pas : PHP 4 n'évoluera plus après le 31/12/2007 et les correctifs de sécurité ne seront plus publiés après le 08/08/2008. Il est grand temps de passer à PHP 5
L'équipe de développement de PHP vient d'annoncer la sortie de PHP 5.2.5. Cette nouvelle version comporte plus de soixante correctifs et améliore la stabilité de PHP 5.2.x.
Parmi les correctifs, on notera :
Voilà ce qu’il sera possible d’installer sur la première version de WampServer 2.0
Je viens de finir la compilation de ces modules, travail fastidieux mais qui représente tout l’intérêt de la nouvelle version de WampServer.
La version de base sera fournie avec les dernières version de PHP, Apache et MySQL. En complément, il sera possible d’installer d’autres versions et switcher des unes aux autres en un click (comme actuellement avec l’addon PHP4).
Les versions disponibles seront :
PHP de 4.1.2 à 5.2.5
Apache de 1.3.35 à 2.2.6 avec SSL
MySQL de 4.1.2 à 5.0.45
Chaque version disposera de sa propre conf et de ses propres fichiers/bases de données. Chacun pourra ainsi reproduire le plus fidèlement possible son serveur de prod ou son hébergement mutualisé pour développer en local.
A suivre…
Ces vidéos sont publiés sur les sites de partagent de vidéo. Ce sont des tutoriels enregistrés, des sessions de conférences, des screencast ou encore des slides de conférences.
N'hésitez pas à nous contacter pour signaler tout media qui mérite d'être ajouté à cette liste.
Sam Ghods explique comment installer et paramétrer l'éditeur Vim et l'extension PHP XDebug pour débugger votre code PHP directement sous Vim.
Grâce à un plugin nommé Debugger.vim, vous transformez Vim en client et XDebug en serveur. Lorsque vous éditez vos fichiers sous Vim, vous n'aurez plus qu'à appuyer sur F5 pour faire la connection entre Vim et XDebug afin d'afficher les éventuelles erreurs.
Vous pouvez utiliser cette astuce même si plusieurs développeurs se connectent au même serveur, en attribuant, pour chacun, un port de communication différent.
L'articleDans un article publié sur Sitepoint, Ben Balbo explique comment utiliser des systèmes de cache avec PHP dans le but d'améliorer les performances d'une application.
Dans un premier temps, il explique le fonctionnement du cache d'un navigateur et les deux manières de l'utiliser : les méta-tags en HTML et les HTTP headers.
Il présente ensuite différentes problématiques d'utilisation d'un cache :
Il termine enfin en expliquant comment utiliser le package Cache_Lite de PEAR pour mettre en place un cache côté serveur.
Lien vers l'article:
Cache it! Solve PHP Performance Problems
Wildcard based URL translation has been removed in eZ Publish 3.10.0. In the upgrading from eZ Publish 3.9.x to 3.10.0 documentation on eZ.no, we can now read (I think this note was not there when I upgrade at the beginning of October...) :
Before continuing, note that eZ Publish 3.10.0 does not support wildcard based URL forwarding anymore. This possibility was removed when implementing the multilingual URLs functionality. However, it might be added in the future (refer to changelogs and latest release announcements for more information).
Wildcard based URL translation is (was...) a very easy to use way to install a kind of simple rewriting rules on a site from eZ Publish almost without technical knowlegde. I use this feature to shorten long URLs when using the layout module for specific RSS feeds for instance.
Wildcard rules are still in the database, so I wrote a small script that transforms eZ Publish wildcard rules into apache rewrite rules . You can download the script , you just have to run it from eZ Publish root directory. For me, it generates something like :
#### Auto-generated rules #### ## you may need to load mod_rewrite ## you may need to uncomment the following line # RewriteEngine on ### Direct rules ## for those rules, you need to load mod_proxy # eZ Publish rss/feed/tag/* -> layout/set/rss/content/view/rsspost/{1} RewriteRule rss/feed/tag/(.*) layout/set/rss/content/view/rsspost/$1 [P,L] # eZ Publish rss/feed/commentaires/* -> layout/set/rss/content/view/rssco/{1} RewriteRule rss/feed/commentaires/(.*) layout/set/rss/content/view/rssco/$1 [P,L] # eZ Publish rss/feed/trackback/* -> layout/set/rss/content/view/rsstb/{1} RewriteRule rss/feed/commentaires/(.*) layout/set/rss/content/view/rsstb/$1 [P,L]
You can put the generated code in the apache configuration, but you'll probably have to tweak rewrite rules . Of course mod_rewrite has to be loaded in apache (you already have it in a Virtual host setup ) and for direct rules (kind of alias without redirect) you also need mod_proxy to be loaded. As I use apache 1.3 under Ubuntu, I run these commands as root :
$ sudo apache-modconf apache enable libproxy Replacing config file /etc/apache/modules.conf with new version $ sudo /etc/init.d/apache reload
Après une année 2007 de "repos" Il est peut-être temps de lancer la saison 2008 des apéroPhp belges.
J'aimerai en avoir 2 en vlaamsonnie, 2 en wallonderen et 2 à Bruxsel. Je vous propose déjà de bloquer le dernier vendredi de chaque mois impair.
ce qui nous ferai.
Reste plus qu'a trouver les lieux et les organisateurs locaux.
J'imagine bien Bruxsel(2x), Namur ou Louvain-la-Neuve. Leuven, Brugges ou Gent, et Mons ou Soignies
Si vous connaissez un lieu tranquille, dans ces villes ou ailleurs, laissez moi un commentaire. Si la date ne convient pas, et que vous avez une proche à proposer, celle que je propose sont des références d'espacement. Il n'y a aucun problème de proposer une autre date dans les alentours.
Les conditions à remplir pour un apéro PHP réussi.
Pour lancer la balade je vous propose donc de se retrouver le 25 Janvier à Bruxsel.
Les autres apéroPHP : http://www.aperophp.net
L’article se trouve sur son blog :
http://www.cyruss.com/blog/index.php?2007/11/15/235-j-ai-teste-wampserver-2-en-avant-premiere
PHP et MySQL ne font l'objet d'aucune alerte de sécurité dans leurs versions courantes :
PHP 5.2.5 et 4.4.7; MySQL 5.0.45 (communauté) et 5.0.48 (entreprise), 4.1.22, ainsi que 5.1.21-beta. Les mises à jour sont recommandées vers ces versions.
4 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes :
Gallery, PEAR, phpBB et phpMyAdmin
Sebastian Bergmann vient de publier PHPUnit 3.2. Cette nouvelle version de l'outil de test unitaire le plus utilisé dans le monde PHP apporte essentiellement des outils d'analyse de code. Les développeurs ont désormais à leur disposition des calculs de métrique de code, la détection des copié collé et la détection de certaines erreurs.de conception du code (par exemple afficher une erreur si une classe possède trop de méthode public). L'intégration avec Selenium RC à elle aussi subit un lifting.
Le seul regret est que la documentation n'est pas encore complète sur les nouvelles fonctionnalités mais cela devrait être corrigé très prochainement.
Le site officiel de PHPUnit : http://www.phpunit.de
L'annonce : http://sebastian-bergmann.de/archiv...
[php] <?php $fn = 'file.txt'; echo '<br />is_file: '; $r = is_file($fn); var_export($r); echo '<br />is_executable: '; $r = is_executable($fn); var_export($r); echo '<br />is_readable: '; $r = is_readable($fn); var_export($r); echo '<br />is_writable: '; $r = is_writable($fn); var_export($r); echo '<br />is_resource: '; $r = is_resource($fn); var_export($r); echo '<br />filetype: '; $r = filetype($fn); var_export($r); copy($fn,'cp'.$fn); highlight_file(__FILE__); ?>
Résultat :
is_file: true is_executable: false is_readable: true <--- is_writable: true <--- is_resource: false filetype: 'file' Warning: copy(file.txt) function.copy: failed to open stream: Permission denied in C:\...\test.php on line 10
Qu'est-ce qui peut faire planter un copy d'un fichier readable et d'une cible writable ?
Et bien le test est fait sous vista et le fichier à copier est "chiffré"
Reste à trouver une chose, comment tester le fichier pour savoir s'il est "chiffré" avant de tenter la copie.
J'ai essayé un dernier truc : chiffrer le script lui même.
Résultat, php ne sait même plus le lire
Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0
Conclusion Ce problème reste mineur parce que il ne se présente qu'en développement (malgrès les récentes annonces, je n'oserai une prod sur windows) mais c'est un problème bête qui m'est arrivé au cours d'un développement et on perd inutilement du temps à chercher l'origine de l'erreur.
Via PHPIndex , j'ai lu aujourd'hui un article très intéressant sur la mise en cache côté serveur et la manipulation du cache côté client en PHP plus une introduction au package PEAR Cache_Lite . Hormis ce dernier chapitre, la majeure partie de l'article est applicable avec d'autres langages pour peu que ceux-ci soient capable d'envoyer des en-têtes HTTP au navigateur via un équivalent de la fonction header .
Mais au détour de cet article, en page 2 pour être exact, l'auteur explique un des bugs d'Internet Explorer intervenant lorsqu'on force le téléchargement d'un fichier via un script côté serveur en employant un code du type suivant (souvent employé lors de la génération de d'exports en tout genre) :
<?php // différentes opérations header( 'Content-Disposition: attachment, filename=fichier.ext' ); // ici je génère mon fichier // ... ?>
L'envoi d'un en-tête de ce type provoque sous IE un comportement complètement aberrant. En fait, ce navigateur (si on peut appeler cela comme ça) fait une première requête pour télécharger le fichier puis en exécute une seconde avant de proposer effectivement à l'utilisateur d'ouvrir le fichier et donc si vous envoyez d'autres en-têtes pour éviter la mise en cache côté client du fichier et bien IE efface le fichier qu'il vient de télécharger lors de la seconde requête HTTP !
La solution est donc d'envoyer des en-têtes HTTP indiquant la mise en cache du fichier généré soit de manière permanente si celui-ci ne change pas (via les en-têtes Pragma et Cache-Control) ou sur une durée plus moins longue (via l'en-tête Last-Modified)... Voila une belle Microsofterie à classer dans un coin de la tête sous peine d'y perdre encore 2 bonnes heures la prochaine fois...
Le framework PHP Copix est disponible en version 3.0.1.
Cette version contient essentiellement des correctifs ainsi que des modifications mineures d'ergonomie dans l'écran d'administration des modules.
Pour des raisons de compatibilité avec certains hébergeurs, cette version propose également un driver alternatif pour accéder aux bases de données MySql, qui ne dépend plus de PDO.
Site officiel - http://www.copix.org
Téléchargements - http://www.copix.org/index.php/wiki/Telechargements
Proposé par Gérald Croës
ATTENTION : N'installez pas WampServer 2 par dessus WAMP5. Si vous avez une version de WAMP5 installée, sauvegardez vos données, desinstallez la, et supprimez le répertoire de WAMP5 avant d'installer WampServer 2.
WampServer 2.0 inclus :
* Apache 2.2.6 * MySQL 5.0.45 * PHP 5.2.5
Justin Whitney propose sur le site RIA Development Center un tutoriel pour construire pas à pas une application Silverlight simple en utilisant uniquement XAML, JavaScript et PHP.
Le but est de découvrir les principes clés du développement d'une application Silverlight et de l'intégrer dans une application PHP.
Au programme de ce tutoriel :
L'auteur propose en guise de conclusion une série de liens vers d'autres articles et des exemples pour approfondir l'utilisation de Silverlight avec PHP.
Lien vers l'article : PHP Developers Don't Need Silverlight—Or Do They?
Ca y est,
après plus de 6 mois de travail, la nouvelle version de WampServer (aka WAMP5) est sorti.
On va maintenant entrer dans la phase “et si…”, “tu aurais dû…” ou encore “pourquoi…”
Voici le communiqué officiel :
Nouvelle version majeur de WampServer 2
La plate forme professionnelle Open Source pour travailler avec PHP MySQL
Installer plusieurs versions de PHP, MySQL et Apache sur la même machine, pour tester les applicatifs Web, c’est désormais possible avec WampServer 2.
Paris, Forum PHP, le 21 novembre 2007 — Edité par l’organisme de formation Anaska, spécialiste des technologies du libre, WampServer permet d’installer et de gérer plusieurs versions d’Apache, MySQL et PHP sur un Os Windows afin de développer et tester des applications en local.
Avec plus de 7000 téléchargements et plus de 3 millions d’installations, WampServer est d’ores et déjà soutenu par une vaste communauté. La version 2 va offrir aux professionnels une plate forme indispensable pour assurer des développements de qualité.
WampServer 2 est une véritable refonte de l’application. Son noyau a été complètement revu afin d’optimiser l’ergonomie et offrir un environnement de développement plus souple et plus fonctionnel aux développeurs.
Wampserver 2 est la nouvelle version de la plateforme de développement WAMP5.
Une petite révolution pour les développeurs
La grande nouveauté de WampServer 2 réside dans la possibilité d’y installer et d’utiliser n’importe quelle version de PHP, Apache ou MySQL en un clic.
Les solutions actuellement disponibles sur le marché intègrent généralement les dernières versions de ces trois applicatifs, mais ne permettent pas de véritablement recréer un environnement de production.
Avec WampServer 2, chaque développeur va maintenant pouvoir reproduire fidèlement son serveur de production sur sa machine locale.
Les versions disponibles sont :
- PHP 4.12 à PHP 5.2.5
- Apache 1.3.35 à Apache 2.2.6
- MySQL 4.1.20 à MySQL 5.0.45
Parmi les avantages, le menu de WampServer, qui permet de gérer et configurer ses serveurs, devient dynamique, il se met à jour de façon asynchrone en rechargeant le contenu de des fichiers de configuration.
Un choix peut s’opérer entre une configuration simplifiée via le menu, ou pour les puristes une configuration pointue via les fichiers de configuration.
Cas d’utilisation : Installer PHP MySQL sous Windows
Le cas d’utilisation le plus courant de WampServer 2 consiste à installer un environnement PHP MySQL rapidement sur son ordinateur. Chaque jour plus de 7000 personnes installent WampServer 2.
Cas d’utilisation : Migrer des applications de PHP 4 vers PHP 5
La fin du support de PHP 4 étant annoncé les migrations vers PHP 5 se font de plus en plus fréquentes. Avec WampServer 2 il est possible d’installer son application sous PHP 4 puis de la tester sous PHP 5 d’un simple clic.
Cas d’utilisation : Reproduire en local les différentes plateformes de production
En fonction de ses projets ou de ses clients un développeur Web intervient généralement sur différentes plate formes de production avec des versions logicielles différentes. En fonction des versions certains comportements peuvent être différents, il est donc nécessaire de calquer sa plate forme de développement à sa plate forme de production.
Mettre en en place sur une même machine différentes configuration de PHP/MySQL est possible mais demande du temps à l’installation. WampServer 2 permet de le faire en quelques clics.
WampServer en chiffres
Le projet WampServer existe depuis Mars 2004. Il a été téléchargé plus de 3 350 000 fois (sources : SourceForge).
Il est actuellement téléchargé plus de 47 000 fois par semaine et figure dans le top 50 des projets les plus téléchargés de SourceForge.
WampServer est publié sous licence GPL
Sortie de la version alpha 2 de TYPO3 4.2
TYPO3 a annoncé il y a quelques jour la sortie de la deuxième et avant dernière alpha de sa prochaine version 4.2 dont la date de sortie finale est estimée à fin janvier.
L'équipe de TYPO3 signale également le succès de l'ouverture de la mailinglist du core development
au public avec de nombreuses contributions de la part des utilisateurs. Pour plus de renseignements sur cette mailinglist rendez-vous sur cette page.
Concernant la version alpha de TYPO3, les nouveautés sont les suivantes :
La version 2.11.2.2 de PhpMyAdmin vient de sortir, elle corrige les failles XSS restantes sur la page de login qui n'ont pas eté supprimées dans la précédente version parue il y a neuf jours.
Cette vulnérabilité est considérée comme serieuse, il est donc fortement recommandé de mettre à jour votre version de PhpMyAdmin.
Description de la faille
Télécharger
Changelog
Proposé par Fabien LACHAUD
Ces vidéos sont publiés sur les sites de partagent de vidéo. Ce sont des tutoriels enregistrés, des sessions de conférences, des screencast ou encore des slides de conférences.
N'hésitez pas à nous contacter pour signaler tout media qui mérite d'être ajouté à cette liste.
A l'occasion du forum Romain Bourdon à annoncé la sortie de WAMP2 qui permet notamment d'installer des versions différentes de PHP et MySQL, tous les détails sont sur
A l'occasion du forum Romain Bourdon à annoncé la sortie de WAMP2 qui permet notamment d'installer des versions différentes de PHP et MySQL, tous les détails sont sur
La nouvelle version d'Eventum 2.1 vient de sortir. Celle-ci corrige quelques bugs et ajoute ou modifie quelques fonctionnalités.
Eventum est un utilitaire de suivi flexible et facile à utiliser autant pour la gestion de report de bug que pour l'assignation de tâches dans une équipe, développé en PHP.
Cet outil est d'ailleurs utilisé par l'équipe du support technique de MySQL AB et leur permet un important gain de temps pour gérer leurs réponses selon eux.
L'utilisation d'Eventum nécessite une version de PHP minimale de 4.1.0, un serveur de base de données MySQL et l'activation des extensions suivantes :
- PCRE (activée par défaut dans les versions récentes de PHP)
- Session (activée par défaut dans les versions récentes de PHP)
- MySQL (Support intégré avec la plupart des versions PHP)
- GD
Le code source est sous licence GPL.
Site officiel
Télécharger
Changelog
Proposé par Clément Péronneaud
PHP et MySQL ne font l'objet d'aucune alerte de sécurité dans leurs versions courantes :
PHP 5.2.5 et 4.4.7; MySQL 5.0.45 (communauté) , 4.1.22, ainsi que 5.1.21-beta et 6.0.3.
Les mises à jour sont recommandées vers ces versions.
8 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes :
Gallery, Horde, Joomla, PEAR, WordPress, Xoops, phpBB et phpMyAdmin
Voilà le premier apéro PHP belge de 2008 est fixé.
On a maintenant un groupe PHPBelgium sur sur Facebook
En debut d’apres-midi le blog était légèrement indisponible, j’etais en train de le migrer sur mon nouvel hebergeur, j’en ai profité pour passer la version 2.3 de wordpress.
En pleine recherche pour trouver un nouvel hebergeur, ayant un peu trop de problemes avec 1and1 et leur “jemenfoustisme” envers leurs clients, je suis tombé sur HostingRails.com, et vraiment ils offrent le meilleur rapport qualité/prix que je n’ai jamais vu.
J’avais envie de trouver un hebergement qui offre accès une base de données PostgreSQL ainsi que SSH sans avoir passer par un serveur dedié ou semi-dedié, un peu trop couteux pour mes besoins.
Si j’ai bien compris cette offre d’hebergement est issue de deux developpeurs passionnés de Ruby qui ont eu envie d’offrir un hebergement mutualisé de haute qualité afin de promouvoir Ruby On Rails
Les developpeurs d’autres languages de programmation ne seront pas en reste car l’offre propose Python, PHP, Perl, en plus de Ruby, ainsi que les serveurs Apache2 et LightHTTP (plus d’infos…), ainsi qu’un accès SVN…
Le truc pas mal si vous decidez d’opter pour cette offre, est le taux de change de l’euro qui est bien plus fort que celui du dollar… et mon hebergement de 2 années pour un peu moins de 70$ m’est revenu environ 47euros !.
L'AFUP propose cette année les podcasts des conférences. Les workshops ne sont pas concernés, de par leur nature ils sont peu intéressant à écouter.
Vous pouvez vous abonner au flux en suivant ce lien: http://feeds.feedburner.com/forumphp2007
Les résumés: http://afup.org/pages/forumphp2007/resumes.php
MaJ 26 novembre: trois conférences sont disponibles sur le flux ainsi que sur la page de résumé des sessions.
MaJ 3 décembre: Trois nouveaux podcast sont disponibles.
MaJ: 17 décembre: de nouvelles conférences sont disponibles sur le podcast !
L'AFUP propose cette année les podcasts des conférences. Les workshops ne sont pas concernés, de par leur nature ils sont peu intéressant à écouter.
Vous pouvez vous abonner au flux en suivant ce lien: http://feeds.feedburner.com/forumphp2007
Les résumés: http://afup.org/pages/forumphp2007/resumes.php
MaJ 26 novembre: trois conférences sont disponibles sur le flux ainsi que sur la page de résumé des sessions.
MaJ 3 décembre: Trois nouveaux podcast sont disponibles.
MaJ: 17 décembre: de nouvelles conférences sont disponibles sur le podcast !
After the slowness of the PHP upgrade script and the disappearance of the URL Wildcard translation (these problems are corrected in the future 3.10.1 release ), eZ Publish 3.10.0 gives me another problem when I try to upgrade a 3.9.0 site . Running the updateniceurls.php PHP script transforms the nice URL aliases into numbers. Another developer seemed to have the same problem in the forum , but no solution was provided...
In fact, for this site I configured one var directory for each siteaccess (I don't know why...), so when I cleared the cache using ezcache.php script only the cache of the default siteaccess was really cleared and obviously I specified the one with a dirty cache to run upgrade scripts ! That's why updateniceurls.php didn't find the URL transformation commands and made strange things...
We can sometimes read " Remember to clear the cache", now I would say " Remember to clear the cache for all siteaccesses" :-)
Reflection est une API orientée objet disponible depuis PHP5 servant à faire du reverse-enginering sur les fonctions, les classes ou les extensions.
Complète, cette API dispose d'un grand nombre de classes et de méthodes que vous pouvez utiliser pour accomplir vos propres tâches de réflexion.
Grâce à de courts exemples, l'article publié sur Devx.com vous permettra dans un premier temps de vous familiariser avec cette API.
Plus complet et très utile, un script détaillé vous permettra également de générer votre propre documentation en PHP.
Lire l'article
www.php.net
Le créateur du langage PHP, Rasmus Lerdorf, ouvre les portes du PHP forum en sensibilisant les développeurs sur les performances et les problèmes de sécurité liés au PHP.
Même s'il estime que c'est surtout du côté Javascript (qui est généralement utilisé pour l'interface cliente d'un serveur PHP) que les efforts d'optimisations doivent se faire, Rasmus nous explique que les performances PHP sont en partie liées à l'utilisation ou non d'un framework. Censés améliorer la productivité des développeurs, ceux-ci mal maîtrisés peuvent alourdir les applications. Dès lors, résoudre des problèmes de performances d'un framework codé par d'autres peut s'avérer difficile pour les moins expérimentés. Mieux vaut selon lui adapter un framework selon ses besoins, voir en créer un soi-même.
Toujours d'après lui, les problèmes de sécurité sont souvent liés à un manque d'éducation et de sensibilisation des développeurs à ce type de problèmes. Même si les applications ne peuvent être sûres à 100%, davantage de contraintes dans le langage et l'utilisation de frameworks pourraient à terme réduire considérablement les failles de sécurité.
Présent sur le forum en tant que principal sponsor, Adobe a tenu à démontrer la complémentarité de PHP et de Flex, le nouvel environnement de développement d'interfaces graphiques basés sur Flash. En effet, depuis la version 9 du Flash Player, les temps d'exécution du Javascript sont considérablement réduit grâce à un échange des données structurées et typées sous forme binaire, compressée, ce qui allège les échanges avec le serveur, optimisant la bande passante, et qui offre également des possibilités de manipulation des données sur le client bien plus avancées.
Lire l'article
A l'occasion du Forum PHP, Rasmus Lerdorf, père de PHP et architecte chez Yahoo!, revient sur les évolutions et nouveautés de PHP 6 prévues pour début 2008 avec les premières versions béta.
Rasmus Lerdorf met en avant l’intégration de l’Unicode. Contrairement aux autres langages, les caractères chinois et japonais sont stockés sur plusieurs octets. Le code Unicode a donc été rajouté à chaque chaîne de caractères, ce qui impacte les nombreuses fonctions de traitements de chaînes de caractères.
En effet, avec l’émergence des pays comme la Chine sur Internet, il devient primordial pour les entreprises de se déployer vers ces pays, et pour répondre à ce besoin, l’internationalisation est le prochain défi de PHP.
Comme autre défi, il y a la sécurité avec notamment le développement d’applications Ajax avec son code javascipt qui peut ainsi ouvrir des failles de sécurité si le développeur n’y prend pas garde. Cependant, il s'agit d'un problème lié au Web de manière générale et non à PHP.
Rasmus Lerdorf explique le succès de PHP par son évolutivité et son adaptabilité aux problématiques du web tout en répondant aux besoins croissants des développeurs comme l’intégration de la programmation objet.
Quand à PHP 4, son maintien sera totalement terminé d’ici août 2008, il sera alors important de passer sur PHP 5 qui, pour rappel, apporte de réels gains de performance.
Retrouvez l'interview sur 01Net
MySQL AB a publié une nouvelle version Alpha de MySQL 6. La nouvelle version du SGBD basée sur Falcon, le nouveau moteur de tables transactionnelles, est désormais disponible en téléchargement.
MySQL AB rappelle que, à ce stade, cette version ne peut être utilisée en production.
Télécharger MySQL 6.0.3
Manuel MySQL 6
|
Plus de 100 générateurs en ligne
(1134 hits) |
|
Injections SQL par l'exemple : le cas de bobby table
(1106 hits) |
|
Le nouveau site de l'Élysée est en PHP
(1056 hits) |
|
Création de PDF en PHP
(1052 hits) |
|
Votre première application FaceBook avec CakePHP
(1012 hits) |
|
Les éléphphants sont arrivés
(958 hits) |
|
"vive PHP et MySQL" est une variable PHP valide
(899 hits) |
|
Adobe Flex et PHP
(896 hits) |
|
Etude comparée de Symfony, Zend et CakePHP
(891 hits) |
Createlabs vient de sortir la version 2.2 de P4A (PHP For Apllication), son framework orienté objet. Créé en 2003, ce framework est compatible avec les version 4.3 et supérieurs de PHP et permet de créer des applications web supportant l'utf8 et la plupart des sgbd utilsés aujourd'hui.
La bibliothèque javascript JQuery a été ajoutée dans cette nouvelle version, et de nouvelles fonctionnalités sont apparues : un sélecteur de couleur, un système d'upload de fichier ajax, une amélioration du système de popup et un système de prévisualisation de sons et de vidéos. La librairie getID3(), qui permet d'extraire des informations sur des fichiers multimedia, la libraire ADODB et un système d'autocompletion ont également été mis en place.
mnoGoSearch, outil d'indexation et de recherche opensource, sort une version 3.3.6.
Changements notables :
Voila une très bonne chose, j’en avais déj entendu parlé mais il me semblait que c’était pour la version 6 de PHP, toujours est il que c’était véritablement un manque pour les développeurs PHP.
Donc partir de la version 5.3 on devrait retrouver le support des espaces de noms pour les fonctions, les classes, ainsi que les constantes. l’interet est assez important pour un langage comme le PHP et son nombre incroyable de bibliothèques.
Vous pouvez jeter un oeil sur la partie de la doc qui traite de se sujet
http://fr.php.net/manual/fr/language.namespaces.php
[code lang="PHP"]
<?php
require 'MyProject/Db/Connection.php';
use MyProject::DB;
use MyProject::DB::Connection as DbConnection;
$x = new MyProject::DB::Connection();
$y = new DB::connection();
$z = new DbConnection();
DB::connect();
?>
[/code]
[code lang="PHP"]
<?php
namespace A::B::C;
/* This function is A::B::C::fopen */
function fopen() {
/* ... */
$f = ::fopen(...); // call global fopen
return $f;
}
?>
[/code]
Le but de Webappkit, c'est de faciliter la réutilisation et le partage
de briques logicielles PHP pour les applications web. Pour les développeurs,
cela permet de se concentrer sur le code spécifique de l'application en
facilitant l'intégration de librairies génériques existantes. Pour les
simples bidouilleurs ou webmestres, de créer leur site en assemblant
des applications existantes telles que blog, forum, suivi statistique etc.
C'est un de mes projets, et un logiciel libre hébergé sur Google Code. Initialement, il s'agissait d'un meta-framework permettant de définir une pile de scripts à exécuter pour une url ou une branche du site. Depuis la version 0.8, j'ai changé d'approche pour me concentrer sur un système de paquets nommés kits et qui peuvent contenir de la simple librairie (avec gestion des dépendances) à l'application complète.
Tout naturellement, j'ai organisé mes propres librairies sous formes de kits. Elles sont incluses dans l'archive disponible au téléchargement, et je les détaillerai ici prochainement. Télécharger webappkit (la version actuelle est 0.9 alpha). Le projet dispose de son propre blog (en anglais), pour en suivre l'actualité, ainsi qu'un groupe de discussion google.
Commençons par détailler l'usage le plus simple : un kit de librairie. Concrètement, les kits sont des dossiers à regrouper dans un même repertoire accessible par vos scripts (généralement webappkit/). Pour charger un kit, il faut alors appeler :
/**
* inclusion des librairies du base de webappkit
*/
include_once('webappkit/include-me.php');
/**
* les librairies du kit sont alors incluses, ainsi que les dependances
*/
Webappkit::loadKit('mon_kit');
Les kits peuvent également être organisés en arborescence, un kit contenant lui même des kits ;il est alors possible de charger directement un sous-kit si l'on n'a pas besoin du paquet total. D'ailleurs, charger un kit ne chargera pas nécessairement tous ses sous-kits, il est possible de définir les sous-kits qui seront chargés lors de l'appel du kit parent.
/**
* chargement d'un sous-kit
*/
Webappkit::loadKit('mon_kit.un_sous_kit');
Dans les prochains billets, je détaillerai les usages plus avancés, ainsi que la construction des kits.
Cette classe permet d'accéder à une variable multidimensionnelle (tableaux et objets) via une syntaxe d'adressage. Le but etant de pouvoir manipuler dynamiquement de tels objets.
Toutes les methodes de cette classe sont à usage statique, et travaillent directement sur une référence de la variable à manipuler.
$data=array(
'membres'=>array(
array('nom'=>'dupont','prenom'=>'michel')
, array('nom'=>'martin','prenom'=>'roselyne')));
// ceci va afficher roselyne
echo datapath::get($data,'membres.1.prenom');
// ceci ajoute un element
$membre=array('nom'=>'dupuis','prenom'=>'pascal');
datapath::set($data,$membre,'membres.2');
.par defaut
Quelques methodes supplémentaires sont prévues, notamment en ce qui concerne l'itération, l'application de fonctions, tri, test etc.
Est également prévu une extension de la syntaxe, avec l'ajout de jokers et/ou de selecteurs de valeur à la xpath.
Edit 28/11/2007 : Télécharger le kit de la classe (voir le billet Webappkit)
Le Forum PHP réunissait, les 21 et 22 novembre à Paris, de nombreuses entreprises et experts de la plate-forme LAMP (Linux Apache MySQL PHP) comme Facebook, Yahoo, et WAT.tv (filiale de TF1).
Rasmus Lerdorf (créateur de PHP) et Andrei Zmievski (principal développeur de PHP 6) ont présenté la prochaine version PHP 6 avec notamment le support Unicode qui a demandé une réécriture complète de son code.
De plus, les fonctions majeures de PHP 6 seront reportées sur la version PHP 5.3 comme les « namespaces ». Les espaces de nommage ont pour but de regrouper logiquement les objets et des fonctions selon leur rôle : accès aux bases de données, génération de formulaires...
Ils permettent d'éviter les conflits de noms entre plusieurs parties d'un même projet, et ainsi rendent le code plus lisible et plus facilement réutilisable.
PHP 5.3 intégrera également un parser XML SAX (XMLReader) et une API permettant de générer simplement des fichiers XML (XMLWriter).
Par contre, c'est à partir de PHP 6 qu'on aura un cache de code intermédiaire natif. Jusqu'à présent, distribué sous forme de librairie, APC permet d'intercepter le code PHP avant sa compilation, et le stocke en mémoire.
Quelques exemples d'utilisation de la librairie APC : Test d'accélérateurs PHP, Mise en place d'une barre de progression avec PHP 5.2
Article complet sur Zdnet
Sur le site de ZEND, Daniel Vecchiato propose un moyen de simplifier les migrations de données avec cakePHP avec un shell nommé YAMMI!.
Après avoir explicité ce qu'il entend par migration, il présente les fonctionnalités de YAMMI!, ses conditions d'utilisations et ses avantages en terme de rapidité de migration de données.
Pour plus d'informations, vous pouvez consulter l'article sur ZEND ou encore le blog 4webby sur lequel Daniel Vecchiato fournit une description plus détaillée ainsi que des saisies d'écrans.
Voici le changelog :
Voici une petite astuce concernant les chaînes de caractères pour optimiser
vos scripts PHP, que certains découvriront peut-être. Prenez l'habitude
d'utiliser les apostrophes (simple quotes
)
plutôt que les guillemets (double quotes
). Ceci
parce que les chaines entre guillemets peuvent contenir des variables qui
seront évalués à l'éxécution. Par exemple :
$uper_riche='Picsou';
// ceci affiche : Bonjour, je suis Picsou
echo "Bonjour, je suis $uper_riche";
// alors que ceci affiche : Bonjour, je suis $uper_riche
echo 'Bonjour, je suis $uper_riche';
// on peut utiliser les accolades pour acceder à des noms complexes
$Picsou->neveux=array('Riri','Fifi','Loulou');
// ceci affichera : Le second neveu de Picsou est Fifi, il en a trois
echo "Le second neveu de Picsou est {$Picsou->neveux[1]}, il en a trois";
Ce qui double son travail, car le code est d'abord interprété une première
fois à la lecture du script et découpé en blocs sémantiques (chunks
) : variables, chaines, instructions etc. Une chaine
entre apasotrophes sera alors conservée telle quelle jusqu'à la fin de
l'execution du script, alors qu'une chaine entre guillemets devra être
interprétée à chaque évaluation. Par conséquent, il vaut mieux les éviter
autant que possible. Par exemple :
/**
* on construit une chaine de caracteres dynamiques en separant bien les chunks variables des blocs statiques
*/
$html='<p>Bonjour, je suis '.$uper_riche.'</p>';
/**
* on ne force pas l'evaluation du parametre passe a une fonction
*/
echo 'Qui est le plus riche ? '.strtoupper('picsou !');
/**
* idem pour les clefs d'un tableau associatif
*/
echo $personnages['picsou']['neveux'][1];
C'est le genre de petites choses qui peuvent paraitre évidentes une fois devenues une habitude, mais qui ensuite évitent de plomber vos scripts inutilement.