Toute l'actualité francophone sur PHP en un seul flux

Août 2009 – Nexen.net: JpGraph 3.0.2

Image pour le titre du contenu
JP Graph est une bibliothèque graphique, et la nouvelle version qui était très attendue vient d'être mise à disposition.
JpGraph est maintenant orientée objet et, pour fonctionner parfaitement, requiert une version PHP 5.1.x. JpGraph garde les mêmes possibilités qui ont fait son succès, c'est à dire la possibilité de générer en ligne de nombreux styles de graphiques.
Les évolutions sont nombreuses, les principales sont :
  • La compatibilité avec PHP 5.3
  • Une documentation réécrite
  • De nouveaux graphiques visuels
  • Lecture de données en matrice
  • Création de code barres en lignes de commandes.
  • De nouvelles façons de voir les diagrammes de Gantt
  • De nombreuses corrections de bugs
  • etc...

Août 2009 – Nexen.net: Zend Framework 1.9

Image pour le titre du contenu
La nouvelle version de Zend Framework 1.9 vient de sortir. Cette nouvelle version supporte les versions de PHP 5.2.x et 5.3.
En plus de cette nouvelle compatibilité, de nouveaux composants professionnels ont été insérés qui sont :
  • Les services Web REST
  • Gestion des messages
  • LDAP
  • RSS & Atom
  • Support de DBUnit

Il ne reste plus qu'à consulter le communiqué officiel pour connaître l'ensemble des évolutions

Août 2009 – Nexen.net: Encodage de caractères

Image pour le titre du contenu
Avec les différents formats d'encodage de caractères, il arrive souvent de rencontrer quelques soucis au niveau de l'affichage en PHP des zones de texte provenant de fichiers textes ou de base de données comme MySQL ou autre format SQL.
Le principal souci rencontré concerne l'utilisation de la norme ISO-8859-1 vers le format UTF-8. Une des solutions est l'utilisation de la fonction « json_encode ».
Cette fonction est disponible sur le blog de Pablo Viquez sous la forme d'un tutorial en deux parties.
http://www.pabloviquez.com/2009/07/json-iso-8859-1-and-utf-8-part1/
 
http://www.pabloviquez.com/2009/07/json-iso-8859-1-and-utf-8-%E2%80%93-part2/

Août 2009 – Nexen.net: Vérifier si une API PHP fonctionne sur Project Zero

Image pour le titre du contenu
Project Zero est un projet développé depuis quelques années en partenariat avec IBM qui permet le développement d'applications web dynamique "sans difficulté, sans frais et sans obstacle".
Le projet évolue régulièrement pour assurer une meilleure souplesse sur le Web 2.0 avec PHP, REST et Dojo
Zoe Slattery publie sur son blog une approche pour vérifier si une application comme PHPunit fonctionne sur Project Zero.

Août 2009 – Kamelot Blog: PHP scan : array intersect

Il y bien bien longtemps (8-9 ans), j'écrivais un tuto sur les tableaux en php(3)... que d'eau passées sous les ponts depuis, avec surtout la révolutionnaire arrivée des itérateurs.

Pourquoi je parle de ceci ?

Une question au boulot hier  : j'ai une liste et un tableau. Je veux récuperer les valeurs du tableau en question pour lesquelles les clés sont dans la liste.
Et ce sans faire de boucle en php.

Première réponse qui me vient à l'esprit : filterIterator ou array_ intersect_???

Ca c'était pour la petite histoire et pour un post ulterieur, mais là je vais d'abord passer en revue la famille des array_intersect_*

Fonction                  |  PHP 4    | PHP 5
- - - - - - - - - - - - - | - - - - - | - - - - - 
array_intersect           | >= 4.0.1  |  oui   
array_intersect_assoc     | >= 4.3.0  |  oui
array_intersect_key       |   non     | >= 5.1.0
array_intersect_uassoc    |           |  oui
array_intersect_ukey      |   non     | >= 5.1.0
array_uintersect_assoc    |   non     |  oui
array_uintersect_uassoc   |   non     |  oui

Points communs

  • retournent toutes un tableau
  • les valeurs retournées sont toujours celle du premier tableau
  • les clés retournées sont toujours celle du premier tableau
  • le nombre de tableau supplémentaires est libre
  • pour les _intersect_u le nom de la fonction call back est à la fin.
  • pour les _uintersect_u le nom des 2 fonctions callback est à la fin.
  • toutes disponibles à partir de 5.1.0 (et vous n'utilisez pas une antiquité donc vous les avez toutes :)

array_intersect

  • array_intersect ( array $array1 , array $array2 [, array $ ... ] )
retourne un tableau contenant toutes les valeurs qui sont présentes dans tous les autres arguments array2 , ...

array_intersect_assoc

  • array_intersect_assoc ( array $array1 , array $array2 [, array $ ... ] )
retourne un tableau contenant toutes les valeurs qui sont aussi présentes dans tous les autres arguments array2 , ... 
Notez que les clés sont utilisées durant la comparaison, contrairement à array_intersect().

array_intersect_key

  • array_intersect_key ( array $array1 , array $array2 [, array $ ... ] )
array_intersect_key() retourne un tableau contenant toutes les valeurs du tableau array1 
qui contiennent des clés présentes dans tous les arguments.

array_intersect_uassoc

  • array_intersect_uassoc ( array $array1 , array $array2 [, array $ ... ] , callback $key_compare_func )
retourne un tableau contenant toutes les valeurs du tableau array1 
qui sont présentes dans tous les arguments. 
Notez que les clés sont utilisées dans la comparaison par opposition à la fonction array_intersect().
La comparaison d'index est effectuée en utilisant la fonction de rappel fournie. 
Elle doit retourner un entier, plus petit que, égal à ou plus grand que zéro 
si le premier argument est considéré comme étant, respectivement, plus petit que, égal à ou plus grand le second.

array array_intersect_ukey

  • array_intersect_ukey ( array $array1 , array $array2 [, array $ ... ] , callback $key_compare_func )
retourne un tableau contenant toutes les valeurs du tableau array1 
qui contiennent des clés présentes dans tous les arguments array2 , ... 
Cette comparaison est effectuée en utilisant une fonction de rappel fournie par l'utilisateur. 
La fonction de rappel doit retourner un entier plus petit que, égal à ou plus grand que 0 si la première clé est considérée, 
respectivement, comme plus petite que, égale à ou plus grande que la seconde.
exemples
<?php
highlight_file
(__FILE__);
echo 
'<hr/><pre>';
$array1 = array("a" => "green""x"=>"red""blue""yellow""v"=>"brown""t"=>"purple""orange");
$array2 = array("b" => "green""c"=>"yellow""red""X"=>"BLUE""z"=>"a""gray","v"=>"brown""T"=>"purple");

print_r($array1);
print_r($array2);
echo 
'-----' "\n"
echo 
'array_intersect' "\n"
print_r(array_intersect($array1$array2)); 
// quelles valeurs  (et leurs clé dans array1) sont dans les 2 tableaux ?

echo '-----' "\n"
echo 
'array_intersect_assoc' "\n"
print_r(array_intersect_assoc($array1$array2)); 
// quels couples clé-valeurs sont dans les 2 tableaux ?

echo '-----' "\n"
echo 
'array_intersect_key' "\n"
print_r(array_intersect_key($array1$array2));
// quelles clés (et leurs valeurs dans array1) 
// notez que bleu qui avait automatiquement reçu la clé 0
// et yellow la clé 1 sont repris car red avait cette clé 0 et gray la 1 dans array2, 
// par contre orange n'est pas repris

echo '-----' "\n"
echo 
'array_uintersect' "\n"
$array2['T']='purple';
print_r(array_uintersect($array1$array2"strcasecmp"));
// ici on va donc comparer les valeurs de array 1 et 2 
// si strcasecmp retourne vrai on reprend la valeur et sa clé dans array 1

echo '-----' "\n"
echo 
'array_intersect_uassoc' "\n"
print_r(array_intersect_uassoc($array1$array2"strcasecmp"));
// C'est comme array_intersect_assoc 
// mais on donne la fonction qui décide si les clés et les valeurs sont "les mêmes" 
// ici strcasecmp rends la comparaison insensible Ã  la casse, du coup t = T et purple s'ajoute au brown

echo '-----' "\n"
echo 
'array_intersect_ukey' "\n"
$array2['T']='gold';
print_r(array_intersect_ukey($array1$array2'strcasecmp'));
echo 
' - - - - -' "\n"
$array1['T']='black';
print_r(array_intersect_ukey($array1$array2'strcasecmp'));
echo 
' - - - - -' "\n"
print_r(array_intersect_ukey($array1$array2'key_compare_func'));
// C'est comme array_intersect_key 
// on ne regarde que les clés mais on donne la fonction qui traite la comparaison
// ici strcasecmp rends la comparaison insensible Ã  la casse, 
// du cup t =T et  purple s'ajoute au brown alors que la valeur associée au t avait Ã©té changée.
// Notez que si on ajoute Ã  array1 une valeur pour T (alors que t existe toujours, c'est purple qui sera retourné et non black
// pour le troisieme exemple on prend une fonction maison qui compare

echo '-----' "\n"
$array1['t']='PuRple';
$array2['T']='purple';
$array1['x']='silver';
$array2['x']='SilVer';
$array1['y']='yyyy';
$array2['Y']='YYYY';
$array1['G']='G';
$array2['g']='g';
$array1['h']='h';
$array2['h']='h';
$array1['J']='J';
$array2['J']='J';

echo 
'array_uintersect_assoc' "\n"
// La doc n'est pas claire car les 2 fonctions on la même description
print_r(array_uintersect_assoc($array1$array2"strcasecmp")); //Calcule l'intersection de deux tableaux avec des tests sur les index, compare les index en utilisant une fonction de rappel
print_r(array_intersect_uassoc($array1$array2"strcasecmp")); //Calcule l'intersection de deux tableaux avec des tests sur les index, compare les index en utilisant une fonction de rappel
// et pourtant les résultats differrent.puis que la première accepte x=>silver 
// je ne suis pas sur de moi mais je dirait que pour la première strcasecmp s'applique au clé et au valeurs contrairement Ã  ce que dit la doc.

 
echo '-----' "\n"
echo 
'array_uintersect_uassoc' "\n"
print_r(array_uintersect_uassoc($array1$array2"strcasecmp""strcasecmp"));
// Dans ce cas on peut choisir une fonction utilisateur pour les clés et une pour les valeurs

function key_compare_func($key1$key2)
{
    if (
$key1 == $key2)
        return 
0;
    else if (
$key1 $key2)
        return 
1;
    else
        return -
1;
}



?>


Array
(
    [a] => green
    [x] => red
    [0] => blue
    [1] => yellow
    [v] => brown
    [t] => purple
    [2] => orange
)
Array
(
    [b] => green
    [c] => yellow
    [0] => red
    [X] => BLUE
    [z] => a
    [1] => gray
    [v] => brown
    [T] => purple
)
-----
array_intersect
Array
(
    [a] => green
    [x] => red
    [1] => yellow
    [v] => brown
    [t] => purple
)
-----
array_intersect_assoc
Array
(
    [v] => brown
)
-----
array_intersect_key
Array
(
    [0] => blue
    [1] => yellow
    [v] => brown
)
-----
array_uintersect
Array
(
    [a] => green
    [x] => red
    [0] => blue
    [1] => yellow
    [v] => brown
    [t] => purple
)
-----
array_intersect_uassoc
Array
(
    [v] => brown
    [t] => purple
)
-----
array_intersect_ukey
Array
(
    [x] => red
    [0] => blue
    [1] => yellow
    [v] => brown
    [t] => purple
)
 - - - - -
Array
(
    [x] => red
    [0] => blue
    [1] => yellow
    [v] => brown
    [t] => purple
)
 - - - - -
Array
(
    [a] => green
    [0] => blue
    [1] => yellow
    [v] => brown
)
-----
array_uintersect_assoc
Array
(
    [x] => silver
    [v] => brown
    [h] => h
    [J] => J
)
Array
(
    [v] => brown
    [h] => h
    [J] => J
)
-----
array_uintersect_uassoc
Array
(
    [v] => brown
    [t] => PuRple
    [y] => yyyy
    [G] => G
    [h] => h
    [J] => J
)


Je m'arrète là je continuerais à propos des itérateurs dans un autre posts. Et pour ces fonctions je vais donc creuser pour cette array_uintersect_assoc() que je n'ai pas correctement cerné.

Août 2009 – Nexen.net: XtraDB pour MariaDB

Image pour le titre du contenu
MariaDB est le nouveau projet important de l'année 2009.
Vadim, au travers son blog, signale le remplacement du moteur de stockage InnoDB par XtraDB. Par ailleurs, MariaDB comprendra également le moteur de stockage PBXT, Sphinx...
Toutes ces nouveautés seront intégrées dans la prochaine version qui devrait sortir dans quelques semaines.

Août 2009 – Nicolas Loeuillet: Fatal error sur un projet symfony « Failed opening required ‘propel/Propel.php’ »

Un collègue de bureau vient de réinstaller sa machine (wamp dernière version avec PHP 5.3.0) et récupère notre projet actuel (symfony 1.2.8 et propel).

Sur la page d’accueil du site, une jolie erreur fatale, précédée d’un warning :

Warning: require_once(propel/Propel.php) [function.require-once]: failed to open stream: No such file or directory in C:\wamp\www\projet_symfony\lib\symfony\plugins\sfPropelPlugin\lib\addon\sfPropelAutoload.php on line 22

Fatal error: require_once() [function.require]: Failed opening required ‘propel/Propel.php’ (include_path=’.;C:\wamp\bin\php\php5.3.0\PEAR’) in C:\wamp\www\projet_symfony\lib\symfony\plugins\sfPropelPlugin\lib\addon\sfPropelAutoload.php on line 22

Petite recherche sur Google, pas grand chose comme résultat.
On regarde du côté de la configuration de propel (databases.yml, propel.ini), du côté des modules apache et autres extensions PHP, au cas où. Toujours rien.

Et la solution se trouve en fait du côté de la conf d’apache. Il faut se rendre dans le répertoire conf/extra de votre apache (soit bin\apache\apache2.2.11\conf\extra pour la dernière version de wamp) et éditer le ficher httpd-vhosts.conf.

Vous aviez surement mis

php_admin_value include_path « .;C:\wamp\bin\php\php5.3.0\PEAR »

alors qu’il faut mettre

php_value include_path « .;C:\wamp\bin\php\php5.3.0\PEAR »

La doc de PHP (autrement appelée « site perso de tight » ;-) si jamais tu passes par ici!) est bien claire avec php_admin_value :

Any directive type set with php_admin_value can not be overridden by .htaccess or ini_set().

Comme ça, vous savez maintenant!

Août 2009 – Nexen.net: Bilboplanet

Image pour le titre du contenu
BilboPlanet est un agrégateur de Flux RSS écrit en PHP/MySQL sous licence aGPL v3. Il s'agit du moteur de Planet-Libre ouvert pour tous.
L'application comprend :
  • une installation graphique
  • une interface d'administration simplifiée
  • la possibilité de personnaliser son propre thème graphique

Le site officiel de l'application propose wiki et blog pour que vous ne soyez pas perdu.

Août 2009 – z-f.fr: PHP 5.3 en approche

Forum: Brèves
Auteur: Vincent
Écrit le: Mon, 22 Jun 2009 10:34:33 +0200
Dernier message: Mon, 22 Jun 2009 10:34:33 +0200

Août 2009 – z-f.fr: Sortie PHP 5.2.10 RC2 et PHP 5.3.0 RC3

Forum: Brèves
Auteur: Vincent
Écrit le: Tue, 16 Jun 2009 13:09:24 +0200
Dernier message: Tue, 16 Jun 2009 13:09:24 +0200

Août 2009 – z-f.fr: Zend Framework 1.9 RC1

Forum: Brèves
Auteur: Vincent
Écrit le: Wed, 29 Jul 2009 10:10:51 +0200
Dernier message: Wed, 29 Jul 2009 10:10:51 +0200

Août 2009 – z-f.fr: ApéroPHP, ce jeudi 18 juin à 19h au Belsuhi's - Paris 19eme

Forum: Brèves
Auteur: misterphp
Écrit le: Tue, 16 Jun 2009 07:27:21 +0200
Dernier message: Wed, 17 Jun 2009 07:24:21 +0200

Août 2009 – z-f.fr: Zend Framework 1.9 Beta

Forum: Brèves
Auteur: Vincent
Écrit le: Fri, 24 Jul 2009 09:36:39 +0200
Dernier message: Mon, 27 Jul 2009 22:11:30 +0200

Août 2009 – z-f.fr: Création d'un nouvelle section du forum et mise à jour

Forum: Brèves
Auteur: Mr.MoOx
Écrit le: Thu, 28 May 2009 11:53:05 +0200
Dernier message: Mon, 08 Jun 2009 17:32:30 +0200

Août 2009 – z-f.fr: Les bases du Zend Framework dans Linux Pratique

Forum: Brèves
Auteur: Vincent
Écrit le: Wed, 22 Jul 2009 21:36:11 +0200
Dernier message: Wed, 22 Jul 2009 21:36:11 +0200

Août 2009 – z-f.fr: [Livre] Easy PHP Websites with the Zend Framework - MAJ

Forum: Brèves
Auteur: Vincent
Écrit le: Fri, 15 May 2009 11:26:08 +0200
Dernier message: Wed, 05 Aug 2009 10:11:55 +0200

Août 2009 – z-f.fr: PHP 5.3 et Zend Framework = performances ?

Forum: Brèves
Auteur: Vincent
Écrit le: Mon, 20 Jul 2009 11:38:38 +0200
Dernier message: Mon, 20 Jul 2009 18:46:39 +0200

Août 2009 – z-f.fr: Zend Framework 1.8.4pl1

Forum: Brèves
Auteur: Vincent
Écrit le: Tue, 07 Jul 2009 17:35:25 +0200
Dernier message: Wed, 08 Jul 2009 09:51:54 +0200

Août 2009 – z-f.fr: Firefox 3.5

Forum: Brèves
Auteur: Vincent
Écrit le: Wed, 01 Jul 2009 09:45:59 +0200
Dernier message: Tue, 28 Jul 2009 13:49:32 +0200

Août 2009 – z-f.fr: Sortie de Zend Studio 7.0 beta

Forum: Brèves
Auteur: Vincent
Écrit le: Fri, 26 Jun 2009 10:32:41 +0200
Dernier message: Thu, 09 Jul 2009 09:59:31 +0200

Août 2009 – z-f.fr: YUI 3 béta 1 sortie

Forum: Brèves
Auteur: philippe
Écrit le: Thu, 25 Jun 2009 09:30:19 +0200
Dernier message: Thu, 25 Jun 2009 10:13:09 +0200

Août 2009 – z-f.fr: Un avant goût du Zend Framework 1.9 - MAJ

Forum: Brèves
Auteur: Vincent
Écrit le: Wed, 24 Jun 2009 10:52:10 +0200
Dernier message: Thu, 23 Jul 2009 09:34:45 +0200

Août 2009 – PHP Québec: 11/5 19:00 Rencontre Mensuelle

PHP Québec vous convie à la rencontre mensuelle du mois de novembre.

En premier lieu, Lawrence MacGuire présentera le Cloud Computing avec Amazon:
- Qu'est-ce que le Cloud Computing?
- Différence entre le Cloud Computing et l’hébergement standard
- L’offre d’Amazon AWS
- Atelier : démonstration d'une infrastructure web avec AWS

En second lieu, Brendan Sera-Shriar présentera sur WordPress (anglais):
Looking at how WordPress uses its own brand PHP for custom plugins, themes, and backend design.

Si vous le souhaitez, confirmez votre présence sur :
Facebook: http://www.facebook.com/event.php?eid=304557210356
Upcoming: http://upcoming.yahoo.com/event/4809379/

Date : 5 novembre 2009
Heure : 19h00

Lieu : École de technologie supérieure, Montréal
Salle : B-3420
Metro: Bonaventure
Carte : http://www.etsmtl.ca/zone2/enbref/rendre.html

Vous aimeriez faire une présentation ou vous avez un sujet à proposer pour une prochaine rencontre? Veuillez contacter les organisateurs: board@phpquebec.com

Prochaine activité:
- 2 décembre: rencontre mensuelle

Août 2009 – PHP Québec: 12/2 18:30 Rencontre Mensuelle


L'équipe de PHP Québec & ConFoo vous invite au 'Career & DemoCamp' qui aura lieu mercredi le 2 décembre.

Qu'est-ce que Career Demo Camp?

Un Career Demo Camp est une occasion pour les développeurs Web et les start-ups de se rencontrer et d'en apprendre davantage sur le marché du travail et sur certains projets locaux passionnants et réseauter!
La soirée débutera avec l'atelier de carrière a 18:30 h.
1) Alex Kovalenko , un chasseur de têtes pour la firme Kovasys, parlera de recherche d'emploi en technologie
2) Joey DeVilla, un évangéliste développeur de Microsoft Canada, parlera de "bloguer pour vivre" en anglais.
À 20 h, la partie Demo Camp commencera et vous pouvez venir et présenter le code que vous avez fait!

Qu’est ce qu’ un Demo Camp?
un ‘Demo Camp » est une série de 6-8 présentations qui sont comme le «Show Case » pour la communauté de développeur. La démo peut être de votre logiciel, application Web ou projet en action. C'est la seule chose on vous permet de montrer sur le grand écran – aucunes diapositives permises ! L'idée est pour vous de montrer votre technologie en action et de nous inspirez, pas vraiment un argumentaire de vente.

Vous voulez présenter lors du DemoCamp? Faites parvenir un email à Jean-Luc (jeanluc@iweb.com) ou à Yann Larrivée (ylarrivee@phpquebec.org)

Notez que la rencontre du jeudi aura lieu pendant le DemoCamp.

Date : Mercredi, le 2 décembre 2009
Heure : 18:30
Centre Mont-Royal
2200, rue Mansfield Montréal, QC, H3A 3R8
International Room One
map: http://tinyurl.com/yjmet2l

Veuillez confirmer votre présence sur le site web de EventBrite:
http://careerdemocamp.eventbrite.com/

Au plaisir de vous-y voir.

Août 2009 – PHP Québec: 9/10 19:00 Rencontre Mensuelle

PHP Québec vous convie à la rencontre mensuelle du mois de septembre.

En premier lieu, Louis-Philippe Huberdeau présentera sur les tests unitaires avec PHPUnit.

Nous poursuivrons avec une séance de question-réponse et finirons par la présentation de la conférence des technologies du web 2010.

Si vous le souhaitez, confirmez votre présence sur :
Facebook: http://www.facebook.com/event.php?eid=283871085001
Upcoming: http://upcoming.yahoo.com/event/4414124/

Date : 10 septembre 2009
Heure : 19h00

Lieu : École de technologie supérieure, Montréal
Salle : B-3420
Metro: Bonaventure
Carte : http://www.etsmtl.ca/zone2/enbref/rendre.html

Vous aimeriez faire une présentation ou vous avez un sujet à proposer pour une prochaine rencontre? Veuillez contacter les organisateurs: board@phpquebec.com

Prochaine activité:
- 13 septembre: ConFoo BBQ
- 1 octobre: rencontre mensuelle

Août 2009 – PHP Québec: 10/1 19:00 Rencontre Mensuelle

PHP Québec vous convie à la rencontre mensuelle du mois d'octobre.

En premier lieu, Mehdi Mehni nous fera découvrir les design patterns:
- Qu'est-ce que les design patterns?
- Pourquoi les utiliser?
- Présentation des différents types de paterns (création, structure, comportementaux)
- Atelier : présentation de quelques patterns par la pratique

En second lieu, Lawrence MacGuire présentera le Cloud Computing avec Amazon:
- Qu'est-ce que le Cloud Computing?
- Différence entre le Cloud Computing et l’hébergement standard
- L’offre d’Amazon AWS
- Atelier : démonstration d'une infrastructure web avec AWS

Si vous le souhaitez, confirmez votre présence sur :
Facebook: http://www.facebook.com/event.php?eid=138287025908
Upcoming: http://upcoming.yahoo.com/event/4428723/

Date : 1 octobre 2009
Heure : 19h00

Lieu : École de technologie supérieure, Montréal
Salle : B-3420
Metro: Bonaventure
Carte : http://www.etsmtl.ca/zone2/enbref/rendre.html

Vous aimeriez faire une présentation ou vous avez un sujet à proposer pour une prochaine rencontre? Veuillez contacter les organisateurs: board@phpquebec.com

Prochaine activité:
- 5 novembre: rencontre mensuelle

Août 2009 – PHP Index: Alerte sécurité et nouvelle version pour SPIP

Un grave problème de sécurité vient de nous être signalé ; ce problème affecte toutes les versions de SPIP 2.0.x jusqu'à SPIP 2.0.8, ainsi que la branche 1.9. Il permet à un attaquant ne disposant d'aucun mot de passe de prendre le contrôle de votre site SPIP et de votre serveur web.

L'alerte est d'autant plus sérieuse que le "trou" n'a pas cette fois été découvert par un "gentil", mais par un véritable "méchant" qui a pris le contrôle d'un site existant pour y insérer des malwares. L'attaque a été détectée et analysée par Thomas Sutton et Pierre Rousset.
(L'équipe SPIP rappelle que le meilleur moyen pour leur signaler un problème de sécurité est d'envoyer un mail à la liste spip-team@rezo.net)

Correctifs :

L'équipe SPIP à donc aujourd'hui deux versions de maintenance de SPIP, qui corrigent ce bug :

  • SPIP 2.0.9, dernière version stable et officielle, qui contient, outre la correction de ce problème de sécurité, quelques améliorations, listées ci-dessous.
  • SPIP 1.9.2i, version de maintenance de la branche 1.9.2

à télécharger sur :
=> http://files.spip.org/spip/stable/ (ou, si vous utilisez spip_loader, en vous rendant à l'adresse http://xxx.example.tld/spip_loader.php)

Pour les spécialistes, le patch de sécurité stricto sensu pour la branche 2.0.x, qui ne corrige aucun autre bug et n'apporte aucune autre fonctionnalité, peut se trouver ici : http://fil.rezo.net/secu-14346-14350+14354.patch (Il s'agit des révisions [14347] [14348] [14349] [14350] et [14354]). Pour la branche 1.9.2x le patch est ici : http://trac.rezo.net/trac/spip/changeset/14354/branches/spip-1.9.2

Écran de sécurité :

Si vous n'avez pas la possibilité de procéder à la mise à jour complète tout de suite, l'équipe SPIP vous invite à colmater sans attendre le problème en installant sur votre site l'« écran de sécurité », que vous pouvez découvrir à l'adresse : http://www.spip.net/fr_article4200.html. Cet écran permet de bloquer une éventuelle attaque sans pour autant devoir mettre à jour les fichiers de SPIP.

Quelques modifications notables entre 2.0.8 et 2.0.9 :

  • Intégration de l'écran de sécurité si présent dans config/.
  • regexp plus strictes dans inc/syndic.php (évite un warning).
  • Le formulaire de login peut rediriger vers la page de l'auteur connecté.
  • Affichage des révisions des champs extras2 et des mots-clés.
  • #FORMULAIRE_ECRIRE_AUTEUR : quand le mail ne part pas, le signaler.
  • Filtres explode et implode.
  • Ne plus changer l'id_auteur des forums quand on les édite.
  • Bug #1757 : quand on renseigne automatiquement un site.
  • Amélioration #1770 : ne pas vider les stats quand on importe un dump.
  • Bug #1777 : ne pas publier une rubrique dont l'article est postdaté.
  • Corriger l'ordre des éléments dans les flux RSS des forums.
  • Afficher en clair les liens dans les forums a modérer.
  • Caractères supplémentaires en arabe.
  • Certains plugins refusaient de s'activer sur certains site.

Août 2009 – PHP Québec: 8/7 18:30 PHP Beer

L’équipe de PHP Québec vous invite à célébrez le 6ième anniversaires des légendaires PHP Beer.

Ce vendredi 7 Août, joignez vous à nous pour une autre légendaire édition de PHP Beer. Les PHP Beers sont un excellent moyen d'élargir votre réseaux et échanger sur divers sujet et peut être parler de PHP. Invitez vos amis collègues de travail à venir prendre un verre!

Venez nous y rejoindre vers 18:30 au Bar le St-Sulpice. Si vous ne nous trouvez pas vous pouvez contacter Yann Larrivée au 514-581-8497


Confirmer votre présence sur :
Upcoming : http://upcoming.yahoo.com/event/4207413
FaceBook : http://www.facebook.com/event.php?eid=153373865504


Ou : St-Sulpice
1680 Rue Saint-Denis, Quartier Latin
Montreal, Québec
Quand : 7 Août à 17:30


Événement avenir :

PHP Beer Montreal
7 Août

BBQ PHP Québec:
à déterminer

Début de l'appel aux Conférenciers pour la conférence PHP Québec 2009
29 Août

Première rencontre mensuel de la saison 2010
3 Septembre


======================

The PHP Quebec team invites you to celebrate the 5th aniversary of the legendary PHP Beers!

This friday join us for a pint or two at the St-Sulpice. PHP Beers are a great way to do networking, meet with peers talk about random topics and maybe about PHP. Invite your friends, co-workers to have a pint with us.

We will be meeting a 6:30pm at the St-Sulpice. If you don't find us you can contact Yann Larriveé by calling 514-581-8497

Please confirm your presence on:
Upcoming : http://upcoming.yahoo.com/event/4207413
FaceBook : http://www.facebook.com/event.php?eid=153373865504

Where : St-Sulpice
1680 Rue Saint-Denis, Quartier Latin
Montreal, Québec
When : 7 August à 18:30

Events to come:

August 7th:
PHP Beer Montreal

TDB:
BBQ PHP Québec + PHP Beer

August 29th:
Call for speaker for the 2010 PHP Quebec Conference

September 3rd : First PHP Quebec meeting of the 2010 season

Août 2009 – PHP Québec: 8/8 13:00 Barbecue PHP Québec

PHP Québec vous invites à son à la septième édition du Barbecue PHP Québec qui aura lieu au Parc du Mont-Royal tout près de la Maison Smith (à l'arrière du lac aux castors) Samedi le 8 Août à 13:00.

Le coût pour le souper est de 5$.
Au programme: hot dog, chips, salade, liqueur, biscuits et surtout, du plaisir.

Veuillez confirmer votre présence par téléphone, au (514)581-8497. Laisser votre prénom, nom, numéro de téléphone, courrier électronique et le nombre de personne qui vous accompagnerons.
Ainsi, Nous serons en mesure de préparer les portions nécessaires.

Si la température ne permet pas de faire le Barbecue nous nous rencontrerons au Mont-Royal pour ce déplacé vers un restaurant.

Si vous ne nous trouvez pas vous pouvez contacter Yann Larrivée au 514-581-8497

Au plaisir de vous voir en grand nombre!

Date : 08 Août 2008
Heure : 13 00
Lieu : Montréal, Parc du Mont Royal, Maison Smith
Carte :
http://www.lemontroyal.qc.ca/carte/2.html
http://www.lemontroyal.qc.ca/pdf/carte-f.pdf
Ville : Montréal

Voir cette évènement sur :
FaceBook : http://www.facebook.com/home.php#/event.php?eid=119949891602
Upcoming : http://upcoming.yahoo.com/event/4209737/

Évènement avenir :
7 Août : PHP Beer Montreal
8 Août : BBQ PHP Québec
29 Août : Début de l'appel aux Conférenciers pour la conférence PHP Québec 2009
3 Septembre : Première rencontre mensuel de la saison 2009



The PHP Quebec association would like to invite you to it's 8th annual barbecue that will be held on the 8st of August 2009.

We will be meeting on the 8th of august at 1:00pm near the Smith House (behind the beaver lake) at the Mont Royal Parc.

There is a small fee to access to this activity. It includes hot dogs, chips, salad, cookies and lots of fun!

Please confirm your presence ASAP by calling at 1-514-693-5657. Leave your full name, phone number, email address and the number of person coming with you. This way we will be able the necessary portions.

In case of rain meet us at the Mont-Royal will then move to a nearby restaurant.

If you cannot find us you can contact Yann Larrivee at 514-581-8497


Date : 8 August 2008
Time : 1:00pm
Location : Montréal, Parc du Mont Royal, Maison Smith
Map :
http://www.lemontroyal.qc.ca/pdf/carte-f.pdf
http://www.lemontroyal.qc.ca/carte/2.html
City : Montréal

View this event on:
FaceBook : http://www.facebook.com/home.php#/event.php?eid=119949891602
Upcoming : http://upcoming.yahoo.com/event/4209737/

Events to come :
August 7th : PHP Beer Montreal
August 8th : BBQ PHP Québec
August 29th : Call for speaker of the 2010 PHP Quebec Conference
September 3rd : First PHP Quebec meeting

Août 2009 – Nexen.net: PHPboost 3

Image pour le titre du contenu
PHPBoost est un CMS français qui existe depuis de nombreuses années. En ce mois d'Août 2009, il revient avec une nouvelle version, toujours en PHP
Cette nouvelle version porte principalement sur la refonte de son noyau.
Les évolutions les plus marquantes :
  • Nouveau moteur de templates
  • De nombreuses fonctionnalités en standard : menu, éditeur texte temps réel (wysiwyg)...
  • Evolutions des intégrations
  • etc

Pour plus de détails :

Août 2009 – Nexen.net: Bonnes pratiques

Image pour le titre du contenu
A la question
Quelles sont les 5 règles d'or du développeur ?
Devzone propose les réponses suivantes:
  • Toutes les erreurs lors du développement tu afficheras.
  • Les tests benchmarks tu prendras en compte.
  • Register Globals tu désactiveras.
  • Les short tags tu n'utiliseras pas.
  • Ton code tu documenteras (enfin).

Août 2009 – Kamelot Blog: PHPBenelux meeting Houthalen (B) August 26 2009 | phpbenelux.eu

PHPBenelux meeting Houthalen (B) August 26 2009

PHPBenelux propose une nouvelle réunion prévue le 26 août 2009.

Cette fois, c'est dans l'Est de la Belgique, à Houthalen.

Au programme

  • 20:00 - accueil
  • 20:30 - à déterminer
  • 21:00 - break
  • 21:10 - Design Patterns par Andries Seutens
  • 22:00 - goodies, drinks & socializing

Août 2009 – Nexen.net: ATMAIL 6

Image pour le titre du contenu
AtMail est une API découpée en 2 parties et réalisée en PHP avec le Zend Framework.
La première partie est un Webmail PHP
La deuxième partie est un serveur Email sous Linux.
L'ensemble de l'API va vous permettre de gérer vos comptes mail de manière efficace, et sera une alternative par rapport à Gmail ou Exchange.

Août 2009 – PHP Index: wampMSS 1.2.0-b1

Nouvelle version de l'application wampMSS disponible à cette adresse : http://www.uni-d.net

La nouvelle version de wampMSS est disponible en version 1.2.0-b1.

Pour rappel, ce programme basé sur WAMP permet de faire fonctionner APACHE, PHP et MYSQL sur un disque amovible de type clef USB.

Cette nouvelle version contient:
- Apache 2.2.11
- PHP 5.3.0
- MySQL 5.1.36
- PhPMyAdmin 3.2.0.1
- Moteur de configuration 1.4.0
- Un outil d'aide à la création d'alias

Pour plus d'informations rendez-vous sur le site de wampMSS http://www.uni-d.net

Proposé par UNi

Août 2009 – Nexen.net: Le PHP est l'avenir

Image pour le titre du contenu
Le langage PHP s'est très répandu grâce à sa souplesse. Il peut s'adapter et évoluer facilement, comme peut évoluer l'internet en général.

Le succès du PHP est entre autres choses dû, comme nous l'explique le blog PHPDev, à une évolution constante et à ses nombreux paquets. Biensûr, l'avenir n'est jamais défini, mais il faudra compter en tout cas sur la présence du langage PHP.



Août 2009 – Nexen.net: Les fragments

Image pour le titre du contenu
Le site « MySQL performance blog » propose en ce mois d'août une série de 4 articles touchant les fragments
La première partie concerne son approche et pourquoi c'est aussi complexe de l'utiliser
La deuxième partie parle du top 10 des améliorations XtraDB, même s'il est très difficile de définir un classement exact et surtout scientifique.
XtraDB est une des parties qui a le plus d'impact et qui est le plus applicable à toutes les charges de travail.

Août 2009 – Nicolas Loeuillet: egest, le plugin Eclipse pour ajouter des raccourcis sur les mouvements de la souris

Vous connaissez peut-être FireGestures, l’extension Firefox qui vous permet d’exécuter des commandes avec les mouvements de votre souris?
Et bien, voici l’équivalent pour Eclipse : egest.

Ayant pris l’habitude de faire des mouvements de souris pour descendre en bas de la page (stop la molette!), je me suis surpris à le tenter sous Eclipse devant une page de code un peu trop longue… En vain!

Sachez le, Eclipse n’intègre pas nativement l’extension FireGestures de Firefox ;-) .

Je me suis donc mis à la recherche d’un éventuel plugin, que j’ai trouvé assez rapidement. Il s’agit donc de egest.

Une fois installé, il faut bien entendu le configurer (ouvez la vue « Mouse Gestures » dans « Window », « Show view », « other… »).

Dans la liste des commandes ( »Avalaible commands »), choisissez l’action que vous souhaitez exécuter avec votre souris.
Par exemple, sur mon poste, j’ai activé les actions suivantes :

  • « Go to the beginning of the text » (se retrouver tout en haut de la page)
  • « Go to the end of the text » (se retrouver tout en bas de la page)

Vous devez choisir maintenant le mouvement que vous exécuterez avec la souris, dans la partie « Available keys ». Vous devez choisir un point cardinal. Par exemple, si vous voulez que le mouvement de la souris soit « bas » et « droite », choisissez « ES » (pour sud est).

Cliquez enfin sur le petit plus en vert pour prendre en compte l’action.

Le plugin propose pas mal de paramètres (gestion des priorités, conditions, …) mais je n’utilise que le minimum, n’ayant pas le temps (ni le besoin pour l’instant) d’aller plus loin.

Les mouvements que j’ai paramétrés ne fonctionnent pas. C’est normal, doc’?

Pensez à l’activer dans la barre d’outils, sur l’icone avec deux flèches (un peu à la manière de la touche tabulation). Tout de suite, ça marche un peu mieux.

C’est terminé pour la petite astuce du vendredi!
Bon weekend!

Août 2009 – Nexen.net: PHP Namespaces

Image pour le titre du contenu
Un des plus importants changements dans PHP 5.3 concerne l'apparition des espaces de noms « Namespaces ». Pour rappel, ils permettent de modifier la structure des applications PHP.
L'objectif de cette nouvelle fonctionnalité va vous permettre de prévenir des problèmes éventuels concernant l'utilisation des fonctions, des classes ayant le même nom et définies plusieurs fois.
Les sites « sitepoint » et « développez »  décrivent la manière de les appliquer sous la forme de tutoriaux.

Août 2009 – Nexen.net: Actualité de développement PEAR, edition 250

Image pour le titre du contenu
10 paquets ont été mis à jour cette semaine :
PEAR est la bibliothèque de composants PHP.

 

 

Août 2009 – Nexen.net: Actualité de développement PECL, edition 247

Image pour le titre du contenu
7 paquets ont été mis à jour cette semaine :
  • pecl_http : support étendu de HTTP
  • newt : interface avec la bibliothèque graphique RedHat Newt
  • APC : cache PHP alternatif
  • timezonedb : base de données de fuseaux horaires pour PHP
  • zip : extension zip
  • gmagick : Provides a wrapper to the GraphicsMagick library.
  • tokyo_tyrant : Provides a wrapper to the Tokyo Tyrant client library.
PECL est la bibliothèque d'extensions C de PHP.

 

 

Août 2009 – Nexen.net: Comment faire du code testable

Image pour le titre du contenu
Jani Hartikainen donne quelques idées supplémentaires pour réaliser du code testable en proposant quelques suggestions sur la façon de le structurer.
Les 3 idées soumises sont :
  • Cesser de créer de nouveaux objets dans les classes
  • Un minimum de méthodes de fonctionnement
  • Faire un minimum de classes.

Août 2009 – Nexen.net: Gestion de codage

Image pour le titre du contenu
Améliorer la qualité de votre code peut se réaliser sous différentes formes. Brandon Savage fait quelques suggestions pour traiter les normes de codage.
Lorsqu'il commence une nouvelle étude, il veille à :
  • Définir le point de départ
  • La présence d'une norme
  • etc

Les points importants qui peuvent aider tous les développeurs et développeuses PHP dans la maintenance de votre code, que remarque Brandon sont :
  • Appliquer des normes de codage
  • Vérifier la présence de commentaires de propriétés
  • Les changements de lignes
  • Améliorer le constructeur du site pour le rendre plus flexible

Août 2009 – PHP Index: Un bridge phpBB3 pour Joomla! 1.5 ?

Découvert il y a peu, Mehdi's Phpbb THREE bridge vient compléter la liste des extensions bien utiles pour Joomla! 1.5.

En effet, un bridge entre Joomla! et phpBB3 manquait à la bibliothèque des extensions Joomla : c'est maintenant chose faite avec ce bridge qui vous permet une intégration du visuel et de la gestion des utilisateurs de phpBB3 dans Joomla! (vous pouvez choisir le type d'intégration qui vous intéresse dans le fichier de configuration livré avec le composant lors de l'installation).
La procédure d'installation de ce composant est à suivre à la lettre si vous ne voulez pas avoir de soucis, elle est consultable à cette adresse.
Pour les non-anglophones, vous pouvez suivre ces instructions simplifiées :

Pré requis :

  • Une installation de Joomla! 1.5
  • Une installation de phpBB3
  • PHP 5 ou supérieur

Installation :

  1. Récupérez l'archive à cette adresse : http://www.mehdiplugins.com/kdown/joomphpbb2-bridge.zip
  2. Vérifiez les noms d'utilisateur : vérifiez que les noms d'utilisateurs (champ "username") de phpBB3 et de Joomla! sont identiques. Au besoin, renommez-les. En effet, le composant compare les noms d'utilisateurs afin de créer des correspondances, le plus important étant le super-administrateur qui doit bien correspondre afin de pouvoir accéder aux deux interfaces d'administrations.
  3. Créez la table des correspondances : utilisez le script "joomphpbb.sql" fournit dans le dossier "other" de l'archive afin de créer la table dans votre base de données (via phpMyAdmin par exemple pour les utilisateurs de MySQL).
  4. Installez le composant : via l'interface d'administration de Joomla!, installer le composant "com_phpbb15.zip" présent également dans le répertoire "other".
  5. Patchez phpBB : copier/coller le contenu du répertoire "phpBB 3.05/hacked" à la racine de votre forum phpBB3 en prenant garde de bien écraser les anciens fichiers.
  6. Configurez et patchez encore : éditez le fichier "joomphpbb_conf2.php" dans le répertoire "bridge" et renseignez les variables $joomUrl (lien absolu de la racine de votre site Joomla!) et $joomRel (lien relatif de votre application Joomla! par rapport à votre forum phpBB3). Laissez la variable $joomIntegrate à zéro pour le moment.
  7. Configurez phpBB : allez dans l'interface d'administration de votre forum phpBB. Dans l'onglet "Styles", définissez le thème "bridgesilver" comme thème par défaut (vous pouvez désactiver les autres thèmes afin de vous assurer que tous les utilisateurs utiliseront bien l'intégration du bridge). Puis dans l'onglet "Général", dans la section "Communication>Authentification", modifiez la méthode d'authentification par "Joomla15".
  8. Fusionnez les utilisateurs : si vous installez ce bridge sur un site et forum comprenant tout deux des utilisateurs différents, il est intéressant de pouvoir harmoniser cela. L'auteur de ce composant (Mehdi Guessous) met à disposition un script php ("quickmerge2.php") qui permet de faire cela. Afin d'être exact, je préfère vous renvoyer à la documentation anglaise, sachez seulement que pour une nouvelle installation vous n'en aurez pas besoin et que si vous en avez besoin, c'est possible de le faire sans "trop" de casse (en effet, pour des raisons d'encryptage de mots de passe différents sur les deux plateformes, ce script va créer des utilisateurs avec des mots de passe aléatoires, ces utilisateurs devront alors utiliser la fonction "Mot de passe perdu" de Joomla! ).
  9. Activez le bridge : éditez le fichier "joomphpbb_conf2.php" copié précédemment en modifiant la variable "$joomIntegrate" selon vos besoins :
    • 0 = pas d'intégration
    • 1 = Intégration visuelle
    • 2 = Intégration de la gestion des utilisateurs
    • 3 = Les deux

Conclusion :

On regrettera peut-être l'installation et le paramétrage qui aurait pu se faire de façon simplifiée via l'administration de Joomla!, permettant aux plus néophytes de pouvoir effectuer la procédure d'installation de façon guidée. Cependant, ce composant remplis parfaitement la tâche pour laquelle il a été développé : pouvoir intégrer un forum phpBB3 à un site Joomla! 1.5 (et il le fait très bien).

Le composant est téléchargeable à la même adresse que la procédure d'installation, ici : http://www.mehdiplugins.com/misc/phpbbjoom.htm

Août 2009 – Dur Comme Faire: Parsing de l'analyse syntaxique de fichiers PHP

Afin d'améliorer les méthodes de développement dans la société pour laquelle je travaille, j'ai mis en place un hook Subversion de type "pre-commit" pour vérifier que la syntaxe PHP des fichiers que l'on souhaite commiter est correcte. Je ne parle pas là de respect de standards de codage,...

Août 2009 – tigrou/pwet.fr: Comment créer des objets eZ Publish en PHP

J'ai découvert il n'y a pas très longtemps la fonction eZContentFunctions::createAndPublishObject() de l'API eZ Publish. Cette fonction bien cachée (et enfin documentée depuis la résolution de ce bug) permet de créer facilement des objets de contenus. Quand je pense que tout le travail est mâché par cette fonction, ça en fait des lignes de codes inutiles... Par exemple, pour créer un objet de la classe de contenu File, ces quelques lignes suffisent :

<?php
$params = array();
$params['parent_node_id'] = 52; // node id of /Media/Files
$params['class_identifier'] = 'file';
$params['creator_id'] = 14; // admin
$params['storage_dir'] = '/tmp/data/'; // don't forget the ended /
$params['section_id'] = 3; // section media
 
$attributesData = array();
$attributesData['name'] = 'My file';
$attributesData['file'] = 'my_file.txt';
 
$params['attributes'] = $attributesData;
$contentObject = eZContentFunctions::createAndPublishObject( $params );
?>

Chaque élément du tableau $attributesData contient les valeurs des attributs du futur objet de contenu sous le format attendu par la méthode fromString() de chaque datatype. Et voila, ce n'est pas plus compliqué que ça ! Dommage qu'il n'existe pas encore l'équivalent pour mettre à jour les objets de contenu existants.

Août 2009 – Nexen.net: Détecter les visages dans une photo

Image pour le titre du contenu
De nombreux sites internet de réseaux sociaux  proposent facilement de repérer un visage et d'en afficher un nom sous la forme de TAG.
Cette opération peut être réalisée avec PHP et l'extension de « OpenCV  Facedetect ».
Sous la forme d'un tutorial, le site Corpocrat Blog en décrit les différentes étapes.

Août 2009 – Lindev: Probléme *_once avec APC

Bug ou .. ? Voilà maintenant plusieurs semaines que je test la nouvelle version de php , à savoir , php 5.3 . Seulement , quelques mises à jour de mon code étaient nécessaires pour une compatibilité parfaite ( pas de notice warning ou deprecated ). Mais après quelques jour d'utilisation , des (...)

Août 2009 – PHP Index: Trois nouvelles versions de d'EasyPHP

EasyPHP va sur ses 10 ans mais est toujours actif. Trois nouvelles versions viennent d'être lancées.
Comme toujours, EasyPHP peut s'installer n'importe où : disque dur, clé USB ...
Avec ces nouvelles versions, les fonctionnalités précédentes restent (comme la gestions des alias) et d'autres apparaissent : possibilité de modifier directement via l'interface d'administration le répertoire DocRoot d'Apache et de déclarer le TimeZone pour PHP.
EasyPHP est maintenant traduit en 7 langues (et d'autres vont venir).

Website : http://www.easyphp.org
Facebook page : http://www.facebook.com/pages/EasyPHP/100608599258
Twitter : http://www.twitter.com/easyphp
Sourceforge : http://www.sourceforge.net/projects/quickeasyphp/

Les trois nouvelles versions (dorenavant le numero de version d'EasyPHP suivra le numero de version de PHP qu'il contient) :

** EasyPHP 5.2.10 **
- PHP 5.2.10
- Apache 2.2.13
- MySQL 5.1.37
- PhpMyAdmin 3.2.1
- SQLite 2.8.17
- Pecl 5.2.6

** EasyPHP 5.3.0 **
- PHP 5.3.0
- Apache 2.2.13
- MySQL 5.1.37
- PhpMyAdmin 3.2.1

** EasyPHP 6.0dev **
- PHP 6.0dev [090817]
- Apache 2.2.13
- MySQL 5.1.37
- PhpMyAdmin 3.2.1

Proposé par Laurent Abbal

Août 2009 – Kamelot Blog: mon checkout ne fonctionne pas via cron

J'ai mis en place un serveur de développement avec un script qui checkout le code.

Pour ce faire j'avais fait un script shell qui fait tout mes checkout générait quelques infos de logs.

Ce script appelé régulièrement par cron devait garder mon serveur de test synchrone.

Problème...

quand j'appelais ce script en direct tout fonctionnait correctement, mais le cron lui ne mettait jamais à jour.

Je me suis alors décidé de regarder les mails envoyés par cron et j'y ai vu ceci

 svn: Can't convert string from 'UTF-8' to native encoding

Une recherche sur le web m'a permi de trouver cet article et la lumière fut.

Ce qui se passe c'est que sur le svn il y avait dans un sous-répertoire des noms de fichier contenant des caractères utf8 !!!.

un set en console m'indiquait LC_CTYPE=en_US.UTF-8 mais pas en cron.

Solution

Dans mon script appelé par le cron, J'ai juste ajouté

export LC_CTYPE=en_US.UTF-8

à mon script et tout à fonctionné correctement

Août 2009 – z-f.fr: Zend Framework 1.9.1

Forum: Brèves
Auteur: Vincent
Écrit le: Thu, 20 Aug 2009 18:24:02 +0200
Dernier message: Fri, 21 Aug 2009 07:26:50 +0200

Août 2009 – z-f.fr: Un livre gratuit sur le Zend Framework

Forum: Brèves
Auteur: Vincent
Écrit le: Thu, 20 Aug 2009 18:31:52 +0200
Dernier message: Wed, 26 May 2010 15:10:25 +0200

Août 2009 – tigrou/pwet.fr: Performances et "extensibilité" (scalability)

Via High Scalability, j'ai découvert cette présentation intitulée Real World Web: Performance & Scalability donnée lors de la MySQL conference 2008 par Ask Bjørn Hansen. Cette longue présentation (189 pages !) est une excellente compilation de la plupart des conseils que l'on peut trouver un peu partout pour améliorer les performances et l'extensibilité (au niveau de l'architecture) d'une application web par exemple à base de MySQL et du langage de votre choix (PHP, Perl, Ruby, ...)

On peut y trouver également quelques petites phrases assez amusantes du type (traduction libre) :

N'hésitez pas à dé-normaliser les données; [...] appelez cela des summary tables, votre DBA n'y prêtera même pas attention.

où encore une jolie manière d'expliquer les concepts de MVC et d'API

  • Model : parle le SQL
  • View : parle le HTML
  • Controller : parle le HTTP
  • API : fait des trucs

Bref, ce document mérite de s'y attarder quelques minutes :

Août 2009 – Nexen.net: Comparaison PHP / javascript

Image pour le titre du contenu
Remis sous le feu des projecteurs il y a quelques années par jQuery, Protype et autre YUI, Javascript est un langage puissant.
Il peut cependant être déroutant pour un développeur PHP à cause de choix de conception assez différents.
Nate Haug fait une rapide comparaison de la gestion des variables, des objets, des tableaux ainsi que des structures de contrôle dans les deux langages.

Août 2009 – Nexen.net: Le retour de EasyPHP

Image pour le titre du contenu
EasyPHP a été l'un des premiers projets proposant une station de développement sous Windows (Apache, PHP et MySQL), avant le célèbre WAMPserver.
EasyPHP propose aujourd'hui  3 nouvelles versions :
  • EasyPHP 5.2.10
  • EasyPHP 5.3.0
  • EasyPHP 6.0dev

Ces versions peuvent être installées sur des supports amovibles comme des clefs USB, avec de nouvelles fonctionnalités :
  • Multilangues
  • Paramétrage à partir de l'administration
  • Déclaration du TimeZone en PHP

Voici le détail des applications utilisées pour chacune des versions :
EasyPHP 5.2.10
  • PHP 5.2.10
  • Apache 2.2.13
  • MySQL 5.1.37
  • PhpMyAdmin 3.2.1
  • SQLite 2.8.17
  • Pecl 5.2.6

EasyPHP 5.3.0
  • PHP 5.3.0
  • Apache 2.2.13
  • MySQL 5.1.37
  • PhpMyAdmin 3.2.1

EasyPHP 6.0dev
  • PHP 6.0dev [090817]
  • Apache 2.2.13
  • MySQL 5.1.37
  • PhpMyAdmin 3.2.1

Août 2009 – Nicolas Loeuillet: Couper/coller facilement du code dans Eclipse

Grâce à la recherche de « tips » pour Eclipse de Pascal Martin, j’ai découvert une astuce qui fera gagner du temps à tout le monde.

Terminés les Ctrl + x / Ctrl + v pour déplacer une ou plusieurs lignes de code.

C’est Janusz qui donne le truc : sélectionnez votre code à déplacer (jusque là, rien ne change) et faites Alt + flèche du haut ou flèche du bas pour déplacer votre code où bon vous semble.

Merci Janusz pour l’astuce et Pascal pour la recherche de tips ;-) !

Août 2009 – Nexen.net: Bonnes pratiques PHP

Image pour le titre du contenu
Les bonnes pratiques PHP pour un projet réussi.
Le site Nettuts.com donne 30 conseils et pratiques pour optimiser la qualité de votre développement. Indispensables pour les débutants et toujours bons à rappeler pour les plus confirmés.
Les principaux points proposés sont :
  • Allumer le rapport d'erreurs
  • Apprendre les DRY
  • Utiliser les commentaires
  • Ne pas faire confiance aux utilisateurs
  • Utiliser le buffering
  • Utiliser le cache
  • Penser aux fichiers de statistiques
  • Installer 1 Mamp, Wamp, Xampp
  • Utiliser une programmation objet

Août 2009 – Nexen.net: Mise en route des expressions régulières

Image pour le titre du contenu
Les expressions régulières en PHP sont un outil puissant, très efficaces si elles sont utilisées correctement.
Le site Noupe publie un nouveau guide d'utilisation. Cet article porte sur certains principes de base, l'utilisation des caractères spéciaux et de quelques exemples utiles comme les validations, les formats des emails...

Août 2009 – Lapin Blanc: Tag Suggestion for symfony

I just have created a patch for sfFormExtraPlugin. It provides a new form widget called sfWidgetFormJqueryTagSuggestion designed to suggest tags. It is based on the Tag Suggestion jQuery plugin of Remy Sharp. You can download it from GitHub, just copy the files to the corresponding directories of (...)

Août 2009 – Nexen.net: Symfony expliqué à ma maman

Image pour le titre du contenu
Ce billet est le premier d'une série visant à expliquer à un néophyte ce qu'est le framework Symfony. Pour cela, l'auteur commence par un rappel général de ce qu'est un framework, à quoi ça sert et comment ça marche.
Ce qui est dit dans ce billet s'applique à la plupart des frameworks PHP.

Août 2009 – Nexen.net: Sécuriser les cookies

Image pour le titre du contenu
Sécuriser les cookies, et donc souvent par rebond les sessions, est essentiel mais encore faut-il bien comprendre les mécanismes mis en jeu.
Le site Carsonified explique comment fonctionnent les cookies puis propose quelques moyens de sécuriser leur usage :
- limiter l'accès au cookie au strict minimum
- bien choisir les informations à y stocker
- protéger le cookie des XSS

Août 2009 – z-f.fr: ZendFramework 1.9.2

Forum: Brèves
Auteur: nORKy
Écrit le: Tue, 25 Aug 2009 22:03:47 +0200
Dernier message: Mon, 31 Aug 2009 10:00:06 +0200

Août 2009 – Nexen.net: Ecrire des tests PHP

Image pour le titre du contenu
Le mois de Mai se trouve être la période où les différentes communautés PHP effectuent des tests : cet événement s'intitule « Fast Test »
Rafael Dhoms vous explique comment participer et surtout comment être prêt pour le jour J.
  • Préparation de l'environnement
  • Le choix des éléments à tester
  • Écrire un test
  • Exécution d'un test
  • Soumettre un test pour PHP

Grâce à cela, vous serez au point pour l'édition 2010

Août 2009 – tigrou/pwet.fr: How to make eZ Publish use override conditions when loading a template

I answered this question today on IRC and a colleague asked me the same thing about two weeks ago... it's time to write down the solution :-)

Basically, you just need to tell what design keys you want to use and their value to the template engine of eZ Publish. The design keys are the parameters you will be able to use in an override condition. Let's take an example with a simplistic PHP view (it lacks a lots of checkings) :

<?php
require_once 'kernel/common/template.php';
$NodeID = intval( $Params['NodeID'] );
$node = eZContentObjectTreeNode::fetch( $NodeID );
$tpl = templateInit();
$tpl->setVariable( 'node', $node );
 
// setting up the context to use override conditions
$res = eZTemplateDesignResource::instance();
$designKeys = array( array( 'class_identifier', $node->attribute( 'class_identifier' ) ),
                     array( 'parent_node_id', $node->attribute( 'parent_node_id' ) ) );
$res->setKeys( $designKeys );
 
$tpl->fetch( 'design:mymodule/myview.tpl' );
?>

In this code, I define two design keys : class_identifier and parent_node_id, so I can write override rules that match on the class identifier or on the parent node id of the node or on both, for example :

[myview_folder]
Source=mymodule/myview.tpl
MatchFile=myview/folder.tpl
Subdir=templates
Match[class_identifier]=folder

With this override condition, eZ Publish will use the template located in override/templates/myview/folder.tpl in the design when the node is a folder, otherwise it will use the default one (templates/mymodue/myview.tpl).

Août 2009 – Nexen.net: Développez des projets créatifs

Image pour le titre du contenu
Que vous soyez un développeur PHP débutant ou expérimenté, le prochain projet qui vous sera confié, ne concernera peut-être pas internet.
Smashing magazine donne quelques idées pour concevoir autre chose qu'un site web :
  • Travailler pour une Box
  • Ecrire une application de bureau
  • Concevoir des gadgets
  • Jouer avec le Hardware

Août 2009 – Nexen.net: Nouvelles utilisations de jQuery

Image pour le titre du contenu
Smashing magazine publie différentes utilisations avec jQuery sous la forme de techniques et de tutoriaux.
Ces nouvelles approches peuvent vous aider dans la réalisation de vos prochains développements web.
Les principaux points présentés sur les 50 sont :
  • Manipulation de bloc avec jQuery
  • Accessibilité graphiques en utilisant des éléments de tableau HTML 5
  • Utilisation du menu Drop Down avec jQuery
  • Création d'un portefeuille filtrables avec jQuery
  • Création d' un sondage dynamique avec jQuery et PHP
  • Utilisation de jQuery pour jouer des fichiers multimédias (MP3, WMA, etc, etc)
  • etc.

Août 2009 – Rom's blog: Débugger avec WampServer, Xdebug et PDT

Pour la plupart des projets, l’utilisation de echo et de var_dump() suffit pde our debugger vos scripts. Le mode web est en « page à page », il est donc rare d’avoir des scripts de plusieurs milliers de lignes comme on pourrait en avoir avec les langages compilés. Il peut toutefois parfois être intéressant de faire du debuggage pas à pas et de pouvoir jouer avec les valeurs de vos variables. Je me propose donc de vous montrer comment configurer cela avec WampServer, l’extension XDebug et l’IDE PDT (Php Developpment Tool).
 
 
INSTALLATION DE XDEBUG AVEC WAMPSERVER

Commençons par installer l’extension XDebug. XDebug permet de faire trois choses :

- améliorer la gestion des erreurs de PHP (afficher plus d’informations lors d’erreurs PHP, optimisation de la présentation de var_dump());

- faire du profiling (à utiliser avec kcachegrind ou wincachegrind);

- debugger vos scripts.

Téléchargez l’extension sur le site de XDebug : http://www.xdebug.org

ATTENTION : pensez bien à télécharger la version qui correspond à la branche de PHP que vous utilisez (PHP 5.2 ou PHP5.3) et à prendre la version thread-safe.

A l’heure où j’écris ces lignes,
pour PHP 5.2 : http://www.xdebug.org/files/php_xdebug-2.0.5-5.2.dll
pour PHP 5.3 : http://www.xdebug.org/files/php_xdebug-2.0.5-5.3-vc6.dll

XDebug n’est pas un extension standard de PHP, nous n’allons donc pas la mettre dans le répertoire /ext/ de PHP afin d’éviter d’éventuels conflits avec le menu de WampServer. Je vous propose donc de la déposer dans le même répertoire que l’exécutable de PHP (php.exe), typiquement :

c:\wamp\bin\php\phpx.x.x\

Renommez l’extension en php_xdebug.dll, elle sera plus facile à manipuler.

Nous allons maintenant l’activer. Pour cela nous allons devoir ajouter des commandes dans le fichier php.ini. Dans WampServer, le fichier php.ini utilisé se trouve dans le même répertoire que le binaire d’Apache (apache.exe). Le plus simple pour l’ouvrir est de passer par le menu de WampServer.

WampServer

Allez à la fin du fichier et ajoutez les lignes suivantes :

zend_extension_ts="c:/wamp/bin/php/phpx.x.x/php_xdebug.dll"
xdebug.remote_enable=1
xdebug.remote_host="127.0.0.1"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
xdebug.remote_mode=req

où x.x.x est votre version de PHP.

En complément, vous pouvez également ajouter

xdebug.profiler_enable = 1
xdebug.profiler_output_dir = "c:/wamp/tmp/"

afin d’activer les fonctions de profiling, ou encore

xdebug.collect_params = On
xdebug.show_local_vars = On

afin d ‘améliorer les informations fournies lors de l’affichage des messages d’erreur.

Une fois ces lignes ajoutées, refermez le fichier php.ini et redémarrez votre service Apache, XDebug devrait maintenant être chargé.

Pour le vérifier, affichez votre phpinfo(). Vous devriez voir apparaître l’information ci-dessous :

phpinfo

Si ce n’est pas le cas, vous avez certainement fait une erreur dans le chemin d’accès au fichier php_xdebug.dll

A ce stade, vous pouvez dors et déjà profiter des fonctions d’amélioration des messages d’erreur de XDebug. Pour cela, essayez d’afficher un message d’erreur et un var_dump().
 
 
CONFIGURATION DE PDT AVEC XDEBUG

Nous allons maintenant configurer PDT pour qu’il utilise les fonctionnalités de debuggeur de XDebug.

Si ce n’est pas déjà fait, commencez par télécharger et installer PDT : http://www.eclipse.org/pdt/

Lors du lancement de PDT, choisissez « c:\wamp\www » comme WorkSpace.

Dans le menu du haut, choisissez window -> preferences.

preferences eclipse

Rentrez maintenant dans le menu « PHP » et cliquez sur « debug ».

debug eclipse

Il existe deux façons de debugger du PHP avec PDT. La première (server) passe par votre serveur web en faisant un appel à localhost. La deuxième (PHP executable) fait un appel direct à l’exécutable de PHP.
Nous allons travailler avec la première solution qui nous offre plus de fonctionnalités et permet, notamment, d’utiliser les méthodes GET et POST.

Par défaut, PDT est livré avec des configurations type pour fonctionner avec XDebug et Zend Debugger. Comme le montre la capture d’écran ci-dessus, choisissez XDebug.

Si votre serveur n’est pas local (localhost), il faudra également modifier la configuration de votre serveur identifié sous PDT par « Default PHP Web Server« .

Voilà, la configuration de base de PDT est terminée, nous allons maintenant pouvoir utiliser PDT pour debugger en mode pas à pas et avec des points d’arrêt.
 
 
UTILISATION DE PDT COMME DEBUGGEUR

Voyons maintenant comment utiliser tout cela. La première chose à faire est de créer un nouveau projet PHP au sein de PDT. Pour cela cliquez sur file -> new -> PHP Project.

Donnez un nom à votre projet (dans la suite de cet article, notre projet s’appellera « test_debug »).
Un répertoire du même nom va être automatiquement créé dans votre répertoire « www ». Vous allez placer ou créer vos scripts PHP dans ce répertoire. Si nécessaire, appuyez sur F5 dans PDT pour que vos scripts apparaissent.

projet eclipse

Ouvrez votre script PHP en double cliquant dessus. Votre code source devrait apparaître dans la fenêtre centrale de PDT.

Nous allons maintenant passer en mode debuggage. Cliquez sur l’icône en forme d’insecte sur la barre d’outil et choisissez Debug As -> PHP Web Page.

eclipse debug as

Cela devrait ouvrir une fenêtre de votre navigateur par défaut (Firefox par exemple) et vous faire basculer sur une perspective de debuggage dans PDT (vous pouvez retrouver les perspectives en haut à droite de PDT).

eclipse perspective debug

Cette perspective est découpée en 5 fenêtres :

- en haut à gauche, une fenêtre de « debug » qui vous donne des informations sur le debuggage en cours et dispose de la barre d’outils de debuggage.

- à droite de cette fenêtre, une autre qui vous donne accès aux variables de votre script et aux points d’arrêt définis.

- en dessous, une fenêtre qui présente votre code, vous montre la ligne courante et permet de définir/annuler des points d’arrêt

- encore en dessous, la fenêtre de console.

- et enfin, à droite, la fenêtre d’Output.

Pour debugger, utilisez la barre d’outils de la fenêtre « debug ».

barre outil debug

Vous pouvez également ajouter des points d’arrêt dans votre code. Pour cela double-cliquez sur la barre grise se trouvant à gauche de votre code (idem pour retirer les points d’arrêt). Des petites boules vont apparaitre pour signaler ces points d’arrêt.

point arret

Au fur et à mesure que vous allez avancer dans le debuggage de votre page, vous pourrez voir le résultat s’afficher directement dans votre navigateur.
 
 
MODIFIER LES VARIABLES EN COURS DE DEBUGGAGE

Il va souvent être utile de modifier le contenu de vos variables en cours de debuggage. Pour cela sélectionnez la variable souhaitée dans la fenêtre d’affichage des variables et modifiez simplement sa valeur.
 
 
TRAVAILLER AVEC GET ET POST

En utilisant PDT avec XDebug, j’ai rapidement eu besoin de jouer avec les tableaux $_GET et $_POST. Malheureusement, je n’ai rien trouvé à ce sujet dans la doc ou dans Google. J’ai toutefois persisté et ai trouvé une astuce pour pouvoir m’en servir.

Commençons par $_GET. Pour le remplir, faites tourner le débuggeur sur votre script et allez jusqu’au bout de votre script. Allez ensuite dans la fenêtre de navigateur ouverte par le debuggeur. Vous devriez vous retrouver avec une barre d’URL de ce type :

url debug

Ajouter les variables que vous souhaitez dans cette url et relancez la page. Retournez maintenant dans PDT, et, magique…la session de debuggage est relancée et les variables sont maintenant disponibles sous $_GET.

Pour $_POST, lancez un debuggage sur le formulaire permettant de faire votre POST et allez au bout du script. Allez dans la fenêtre de navigateur, votre formulaire sera affiché. Remplissez le et validez le. Retournez dans PDT, vous devriez maintenant avoir une session de debuggage sur le script de réception du formulaire.

Il existe certainement d’autres méthodes plus simples pour utiliser nativement $_GET et $_POST avec PDT et XDebug, si vous les connaissez, n’hésitez pas à ajouter votre commentaire à cet article.

De mon côté, j’ai trouvé une autre solution plus efficace et plus pratique pour gérer mes sessions de debuggage, l’utilisation de l’extension XDebug Helper pour Firefox.
 
 
UTILISATION DE L’EXTENSION XDEBUG HELPER POUR FIREFOX

L’extension XDebug Helper pour Firefox va vous permettre de lancer vos sessions de debuggage directement depuis Firefox.

Commencez par installer l’extension que vous pourrez trouver ici :

https://addons.mozilla.org/fr/firefox/addon/3960

Cela va ajouter deux icônes en bas à droite de Firefox.

boutons xdebug

Le premier bouton va vous permettre de lancer des sessions de debuggage. Pour cela, il va falloir configurer PDT pour qu’il accepte le lancement externe de sessions de debuggage. Retourner donc dans la configuration de PDT :

Window -> preferences
puis PHP -> debug -> Installed Debuggers

installed debuggers

Sélectionnez « XDebug » et cliquez sur « configure« .
Dans le menu déroulant « Accept remote session (JIT) » sélectionnez « localhost » (ou « any » si votre serveur est distant).
Vous allez maintenant pouvoir lancer vos sessions directement depuis Firefox.

Pour cela, cliquez sur le bouton de XDebug Helper qui ressemble à une croix dans Firefox (en bas à droite). Celui-ci devrait devenir vert et jaune.

debug actif

Tapez l’URL du script que vous souhaitez debugger(ex : http://localhost/….) et lancez son execution. Retournez dans PDT, votre session de debugage devrait être lancée.
 
 
CONCLUSION

J’espère que ce petit tutoriel vous permettra de développer plus efficacement. A mon avis, tout développeur devrait avoir XDebug installé par défaut. J’ai bien pensé à le fournir directement avec WampServer, mais pour le moment, la structure de WampSever et son mode de fonctionnement « multi-PHP » ne me le permettent pas. Peut être dans une version future…

Août 2009 – Rom's blog: Débugger avec WampServer, Xdebug et PDT

Pour la plupart des projets, l’utilisation de echo et de var_dump() suffit pde our debugger vos scripts. Le mode web est en « page à page », il est donc rare d’avoir des scripts de plusieurs milliers de lignes comme on pourrait en avoir avec les langages compilés. Il peut toutefois parfois être intéressant de faire du debuggage pas à pas et de pouvoir jouer avec les valeurs de vos variables. Je me propose donc de vous montrer comment configurer cela avec WampServer, l’extension XDebug et l’IDE PDT (Php Developpment Tool).
 
 
INSTALLATION DE XDEBUG AVEC WAMPSERVER

Commençons par installer l’extension XDebug. XDebug permet de faire trois choses :

- améliorer la gestion des erreurs de PHP (afficher plus d’informations lors d’erreurs PHP, optimisation de la présentation de var_dump());

- faire du profiling (à utiliser avec kcachegrind ou wincachegrind);

- debugger vos scripts.

Téléchargez l’extension sur le site de XDebug : http://www.xdebug.org

ATTENTION : pensez bien à télécharger la version qui correspond à la branche de PHP que vous utilisez (PHP 5.2 ou PHP5.3) et à prendre la version thread-safe.

A l’heure où j’écris ces lignes,
pour PHP 5.2 : http://www.xdebug.org/files/php_xdebug-2.0.5-5.2.dll
pour PHP 5.3 : http://www.xdebug.org/files/php_xdebug-2.0.5-5.3-vc6.dll

XDebug n’est pas un extension standard de PHP, nous n’allons donc pas la mettre dans le répertoire /ext/ de PHP afin d’éviter d’éventuels conflits avec le menu de WampServer. Je vous propose donc de la déposer dans le même répertoire que l’exécutable de PHP (php.exe), typiquement :

c:\wamp\bin\php\phpx.x.x\

Renommez l’extension en php_xdebug.dll, elle sera plus facile à manipuler.

Nous allons maintenant l’activer. Pour cela nous allons devoir ajouter des commandes dans le fichier php.ini. Dans WampServer, le fichier php.ini utilisé se trouve dans le même répertoire que le binaire d’Apache (apache.exe). Le plus simple pour l’ouvrir est de passer par le menu de WampServer.

WampServer

Allez à la fin du fichier et ajoutez les lignes suivantes :

zend_extension_ts="c:/wamp/bin/php/phpx.x.x/php_xdebug.dll"
xdebug.remote_enable=1
xdebug.remote_host="127.0.0.1"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
xdebug.remote_mode=req

où x.x.x est votre version de PHP.

En complément, vous pouvez également ajouter

xdebug.profiler_enable = 1
xdebug.profiler_output_dir = "c:/wamp/tmp/"

afin d’activer les fonctions de profiling, ou encore

xdebug.collect_params = On
xdebug.show_local_vars = On

afin d ‘améliorer les informations fournies lors de l’affichage des messages d’erreur.

Une fois ces lignes ajoutées, refermez le fichier php.ini et redémarrez votre service Apache, XDebug devrait maintenant être chargé.

Pour le vérifier, affichez votre phpinfo(). Vous devriez voir apparaître l’information ci-dessous :

phpinfo

Si ce n’est pas le cas, vous avez certainement fait une erreur dans le chemin d’accès au fichier php_xdebug.dll

A ce stade, vous pouvez dors et déjà profiter des fonctions d’amélioration des messages d’erreur de XDebug. Pour cela, essayez d’afficher un message d’erreur et un var_dump().
 
 
CONFIGURATION DE PDT AVEC XDEBUG

Nous allons maintenant configurer PDT pour qu’il utilise les fonctionnalités de debuggeur de XDebug.

Si ce n’est pas déjà fait, commencez par télécharger et installer PDT : http://www.eclipse.org/pdt/

Lors du lancement de PDT, choisissez « c:\wamp\www » comme WorkSpace.

Dans le menu du haut, choisissez window -> preferences.

preferences eclipse

Rentrez maintenant dans le menu « PHP » et cliquez sur « debug ».

debug eclipse

Il existe deux façons de debugger du PHP avec PDT. La première (server) passe par votre serveur web en faisant un appel à localhost. La deuxième (PHP executable) fait un appel direct à l’exécutable de PHP.
Nous allons travailler avec la première solution qui nous offre plus de fonctionnalités et permet, notamment, d’utiliser les méthodes GET et POST.

Par défaut, PDT est livré avec des configurations type pour fonctionner avec XDebug et Zend Debugger. Comme le montre la capture d’écran ci-dessus, choisissez XDebug.

Si votre serveur n’est pas local (localhost), il faudra également modifier la configuration de votre serveur identifié sous PDT par « Default PHP Web Server« .

Voilà, la configuration de base de PDT est terminée, nous allons maintenant pouvoir utiliser PDT pour debugger en mode pas à pas et avec des points d’arrêt.
 
 
UTILISATION DE PDT COMME DEBUGGEUR

Voyons maintenant comment utiliser tout cela. La première chose à faire est de créer un nouveau projet PHP au sein de PDT. Pour cela cliquez sur file -> new -> PHP Project.

Donnez un nom à votre projet (dans la suite de cet article, notre projet s’appellera « test_debug »).
Un répertoire du même nom va être automatiquement créé dans votre répertoire « www ». Vous allez placer ou créer vos scripts PHP dans ce répertoire. Si nécessaire, appuyez sur F5 dans PDT pour que vos scripts apparaissent.

projet eclipse

Ouvrez votre script PHP en double cliquant dessus. Votre code source devrait apparaître dans la fenêtre centrale de PDT.

Nous allons maintenant passer en mode debuggage. Cliquez sur l’icône en forme d’insecte sur la barre d’outil et choisissez Debug As -> PHP Web Page.

eclipse debug as

Cela devrait ouvrir une fenêtre de votre navigateur par défaut (Firefox par exemple) et vous faire basculer sur une perspective de debuggage dans PDT (vous pouvez retrouver les perspectives en haut à droite de PDT).

eclipse perspective debug

Cette perspective est découpée en 5 fenêtres :

- en haut à gauche, une fenêtre de « debug » qui vous donne des informations sur le debuggage en cours et dispose de la barre d’outils de debuggage.

- à droite de cette fenêtre, une autre qui vous donne accès aux variables de votre script et aux points d’arrêt définis.

- en dessous, une fenêtre qui présente votre code, vous montre la ligne courante et permet de définir/annuler des points d’arrêt

- encore en dessous, la fenêtre de console.

- et enfin, à droite, la fenêtre d’Output.

Pour debugger, utilisez la barre d’outils de la fenêtre « debug ».

barre outil debug

Vous pouvez également ajouter des points d’arrêt dans votre code. Pour cela double-cliquez sur la barre grise se trouvant à gauche de votre code (idem pour retirer les points d’arrêt). Des petites boules vont apparaitre pour signaler ces points d’arrêt.

point arret

Au fur et à mesure que vous allez avancer dans le debuggage de votre page, vous pourrez voir le résultat s’afficher directement dans votre navigateur.
 
 
MODIFIER LES VARIABLES EN COURS DE DEBUGGAGE

Il va souvent être utile de modifier le contenu de vos variables en cours de debuggage. Pour cela sélectionnez la variable souhaitée dans la fenêtre d’affichage des variables et modifiez simplement sa valeur.
 
 
TRAVAILLER AVEC GET ET POST

En utilisant PDT avec XDebug, j’ai rapidement eu besoin de jouer avec les tableaux $_GET et $_POST. Malheureusement, je n’ai rien trouvé à ce sujet dans la doc ou dans Google. J’ai toutefois persisté et ai trouvé une astuce pour pouvoir m’en servir.

Commençons par $_GET. Pour le remplir, faites tourner le débuggeur sur votre script et allez jusqu’au bout de votre script. Allez ensuite dans la fenêtre de navigateur ouverte par le debuggeur. Vous devriez vous retrouver avec une barre d’URL de ce type :

url debug

Ajouter les variables que vous souhaitez dans cette url et relancez la page. Retournez maintenant dans PDT, et, magique…la session de debuggage est relancée et les variables sont maintenant disponibles sous $_GET.

Pour $_POST, lancez un debuggage sur le formulaire permettant de faire votre POST et allez au bout du script. Allez dans la fenêtre de navigateur, votre formulaire sera affiché. Remplissez le et validez le. Retournez dans PDT, vous devriez maintenant avoir une session de debuggage sur le script de réception du formulaire.

Il existe certainement d’autres méthodes plus simples pour utiliser nativement $_GET et $_POST avec PDT et XDebug, si vous les connaissez, n’hésitez pas à ajouter votre commentaire à cet article.

De mon côté, j’ai trouvé une autre solution plus efficace et plus pratique pour gérer mes sessions de debuggage, l’utilisation de l’extension XDebug Helper pour Firefox.
 
 
UTILISATION DE L’EXTENSION XDEBUG HELPER POUR FIREFOX

L’extension XDebug Helper pour Firefox va vous permettre de lancer vos sessions de debuggage directement depuis Firefox.

Commencez par installer l’extension que vous pourrez trouver ici :

https://addons.mozilla.org/fr/firefox/addon/3960

Cela va ajouter deux icônes en bas à droite de Firefox.

boutons xdebug

Le premier bouton va vous permettre de lancer des sessions de debuggage. Pour cela, il va falloir configurer PDT pour qu’il accepte le lancement externe de sessions de debuggage. Retourner donc dans la configuration de PDT :

Window -> preferences
puis PHP -> debug -> Installed Debuggers

installed debuggers

Sélectionnez « XDebug » et cliquez sur « configure« .
Dans le menu déroulant « Accept remote session (JIT) » sélectionnez « localhost » (ou « any » si votre serveur est distant).
Vous allez maintenant pouvoir lancer vos sessions directement depuis Firefox.

Pour cela, cliquez sur le bouton de XDebug Helper qui ressemble à une croix dans Firefox (en bas à droite). Celui-ci devrait devenir vert et jaune.

debug actif

Tapez l’URL du script que vous souhaitez debugger(ex : http://localhost/….) et lancez son execution. Retournez dans PDT, votre session de debugage devrait être lancée.
 
 
CONCLUSION

J’espère que ce petit tutoriel vous permettra de développer plus efficacement. A mon avis, tout développeur devrait avoir XDebug installé par défaut. J’ai bien pensé à le fournir directement avec WampServer, mais pour le moment, la structure de WampSever et son mode de fonctionnement « multi-PHP » ne me le permettent pas. Peut être dans une version future…

Août 2009 – Nexen.net: Kit pour développeurs

Image pour le titre du contenu
Le site W3Avenue propose une liste d'outils qui pourrait devenir très pratique pour vos prochains développements.
Cette liste assez complète est destinée aussi bien pour les débutants PHP mais aussi pour les plus expérimentés car il s'agit d'une aide précieuse.
La liste présente différentes catégories qui sont :
  • Des accélèrateurs
  • Construction de systèmes
  • Amélioration du code et de l'exactitude
  • Les connections aux bases de données (comme MySQL)
  • Le débogage
  • Les outils IDE de développements
  • La sécurité
  • Les tests

Août 2009 – Kamelot Blog: Quality Assurance in PHP Projects

Quality Assurance in PHP Projects
De sebastian_bergmann



SlideShare Link

Août 2009 – Nexen.net: WSGI connecteur PHP

Image pour le titre du contenu
WSGI est un module qui fait énormément parler de lui dans le langage Python et pour ma part, il constitue une ouverture supplémentaire pour les utilisateurs de PHP.
Ce module vous permet d'exécuter les processus PHP à l'intérieur de Python en utilisant une passerelle WSGI Python et WSGI routage middleware. Les filtres peuvent être ainsi appliqués en face d'eux.
Par exemple, le middleware WSGI authentification basé sur l'autorisation ou le routage, le déploiement, ou encore des filtres de style (comme WSGIOverlay).

Août 2009 – Nexen.net: Actualité de développement PEAR, edition 251

Image pour le titre du contenu
3 paquets ont été mis à jour cette semaine :
  • Crypt_CHAP : Génération de CHAP
  • PHP_UML : qui analyse les dossiers et retourne une représentation UML/XMI des classes trouvées
  • Services_Twitter : Interface PHP avec Twitter
PEAR est la bibliothèque de composants PHP.

 

 

Août 2009 – Nexen.net: Actualité de développement PECL, edition 248

Image pour le titre du contenu
5 paquets ont été mis à jour cette semaine :
  • hidef : vraies constantes
  • mongo : Pilote Mongo Database
  • gupnp : GUPnP wrapper extension
  • xslcache : modification of PHP's standard XSL extension that caches the parsed XSL stylesheet representation
  • libevent : Libevent - event notification
PECL est la bibliothèque d'extensions C de PHP.

 

 

Août 2009 – Nicolas Loeuillet: Astuce – recherche en temps réel dans Eclipse

Petite astuce dans Eclipse pour effectuer une recherche en temps réel (comme dans Firefox, ce que vous saisissez est recherché immédiatement).

Dans la fenêtre de recherche (qui s’ouvre avec Ctrl+F), cochez « Incremental« . Plus besoin d’appuyer sur la touche « Entrée » pour valider la recherche.

C’est pas grand chose, mais ça facilite les recherches.

Et puis vous connaissiez peut-être. Mais pour ceux qui ne connaissaient pas, ça peut servir ;-)

Août 2009 – z-f.fr: Créer son propre CMS avec ZF

Forum: Brèves
Auteur: Vincent
Écrit le: Mon, 31 Aug 2009 13:03:11 +0200
Dernier message: Thu, 03 Sep 2009 20:54:49 +0200