AFUP AFUP Day 2024 Baromètre Planète PHP PUFA
planete-php.fr Articles Blogs Infos RSS Feed Atom Feed Twitter

Articles

Débugger avec WampServer, Xdebug et PDT

Roms Blog 30/08/2009

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.

Voir la suite

Qu?apporte le PHP comme language de programmation ?

Mère Teresa's Blog 27/08/2009
J’ai publié ce message dans le forum PHPFrance.com, suite à la question d’un membre sur “comprendre l engouement des jeunes pour le PHP” ; et j’avais envie de partager ce point de vue.
PHP est fortement lié au web, et en ce moment, tu as pu remarquer un engouement pour le web !
Comme certains l’ont dit [...]

How to make eZ Publish use override conditions when loading a template

cd ~tigrou/pwet.fr/Blog 26/08/2009

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.

Voir la suite

Mise en place de SSL pour des développements

Coding Style 26/08/2009

Dans le cadre d’un projet nécessitant de la sécurité, il peut s’avérer nécessaire de mettre en place SSL. L’achat d’un certificat pour des postes de développement s’avère coûteux et inutile, puisqu’il est possible de faire des certificats auto-signés pour Apache et IIS, en mettant un tout petit peu les mains dans le cambouis.



Dans les deux cas, la procédure est la même :

- générer une demande de signature de certificat (CSR)

- signer le certificat avec OpenSSL

- intégrer le certificat dans la config de l’hôte virtuel


Dans le cas de IIS, le serveur génère une demande de certificat qu’on fera signer par OpenSSL. Dans le cas d’Apache, OpenSSL peut générer la demande et l’auto-signer.


IIS


Etape 1 : Aller dans les propriétés du site virtuel, puis dans l’onglet Sécurité de répertoire.


Cliquez sur le bouton Certificat serveur en bas de l’onglet.  Un assistant s’affiche.


Propriétés IIS


Choisissez “Créer un certificat”, puis sur l’écran suivant “Préparer la demande mais ne pas l’envoyer maintenant”. Saisissez ensuite les informations administratives sur les écrans suivants et enfin l’emplacement où sera stockée votre demande (par défaut c:\certreq.txt).


Créer un certificatPréparer la demande mais ne pas l'envoyer maintenant


Etape 2 : Installez une version Windows d’OpenSSL. Elle est disponible ici.


Etape 3 : Exécutez ensuite les commandes suivantes :


Génération de la clé :



openssl genrsa -des3 -out CA.key 1024


Génération du certificat racine



openssl req -new -key CA.key -x509 -days 1095 -out CA.crt


Signature de la demande générée par IIS (certreq.txt) dans un certificat (autosigne.cer) :



openssl x509 -req -days 365 -in c:/certreq.txt -CA CA.crt -CAkey CA.key
-CAcreateserial -out c:/autosigne.cer


Etape 4 : Intégrer le certificat auto-signé sur le site web.

Voir la suite

De nouveau bluffé par Drupal

Perrick Penet (onpk.net) 23/08/2009

Vendredi dernier, j'ai commencé à migrer le site internet de No Parking vers Drupal. Cela fait bientôt deux ans qu'on développe sur cette plate-forme : il était temps d'y plonger complètement notre site vitrine.


Et je dois bien avouer qu'encore une fois, j'ai été agréablement surpris par la facilité de mise en place. Surtout qu'il s'agit pour l'instant d'une reprise à l'identique. Un grand coup de chapeau en particulier au module Webform : il est d'une configuration totale et d'un fonctionnement efficace. Sans une ligne de code... Le bonheur ! Reste à voir ce que Jeff et Matthieu -- nos spécialistes drupal maison -- vont amener comme idées et nouveautés de la DrupalCon parisienne !

Performances et "extensibilité" (scalability)

cd ~tigrou/pwet.fr/Blog 20/08/2009

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 :


Comment créer des objets eZ Publish en PHP

cd ~tigrou/pwet.fr/Blog 19/08/2009

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.

Voir la suite

Ah les jolies variables de vue

Maxence Delannoy (Wiip) 17/08/2009
logo-zf.png

Je ne sais pas pour vous, mais moi je ne trouve pas ça particulièrement élégant de toujours devoir passer par $this pour accéder à mes variables de vues.



Heureusement, dans le bestiaire des fonctions PHP, on dispose d'une fonction nommée extract qui crée des variables à partir d'un tableau. En la combinant à la méthode getVars de Zend_View qui permet d'obtenir l'ensemble des variables assignées à une vue, on peut exporter ces dernières sous la forme de variables locales.


en lire plus

Zend Framework 1.9.1

Maxence Delannoy (Wiip) 13/08/2009
logo-zf.png

La version 1.9.1 du Zend Framework est disponible depuis le 11 août. Cette version de maintenance corrige quelques bogues, dont notamment ceux qui affectaient le composant Zend_Acl. D'après Ralph Schindler, le problème des ressources qui n'étaient pas transmis en tant qu'objet aux classes d'assertion et dont je vous avait parlé précédemment dans mon article sur les assertions dynamiques sont à présent résolus. Une bonne nouvelle donc, puisque c'était vraiment un point bloquant pour tirer vraiment parti des fonctionnalités proposées par Zend_Acl.


en lire plus

Zend Framework : contrôleur CRUD

Maxence Delannoy (Wiip) 10/08/2009
Logo Zend Framework

Dans une application MVC qui a besoin de faire persister des données, les contrôleurs doivent réaliser 4 opérations de base qu'on désigne souvent par l'abréviation CRUD : Create, Read, Update et Delete. Pour une application développée avec le Zend Framework, un contrôleur est en fait une classe dérivée de Zend_Controller_Action. Afin d'éviter de dupliquer inutilement du code, les développeurs choisissent souvent d'écrire une classe de base qui fournira une implémentation standard de ces opérations.


en lire plus

Blogs

Infos

Ajouter une source ?

Envoyez un email avec l'URL du site et du flux à planetephpfr AT afup POINT org

Gestion

AFUP