<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Planète Adenova</title>
	<atom:link href="http://blog.adenova.fr/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.adenova.fr</link>
	<description>Le blog de l&#039;agence Adenova</description>
	<lastBuildDate>Mon, 11 Jul 2011 06:59:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ajouter la variable d&#8217;environnement APPLICATION_ENV pour Zend Framework sous IIS 7.5</title>
		<link>http://blog.adenova.fr/2011/07/ajouter-la-variable-denvironnement-application_env-pour-zend-framework-sous-iis-7-5/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ajouter-la-variable-denvironnement-application_env-pour-zend-framework-sous-iis-7-5</link>
		<comments>http://blog.adenova.fr/2011/07/ajouter-la-variable-denvironnement-application_env-pour-zend-framework-sous-iis-7-5/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 10:22:02 +0000</pubDate>
		<dc:creator>Micaël VANHALST</dc:creator>
				<category><![CDATA[Hébergement]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[environnement]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[iis]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://blog.adenova.fr/?p=144</guid>
		<description><![CDATA[Si vous développez une application ou un site web avec Zend Framework et que vous souhaitez l&#8217;héberger sous IIS 7.5, vous trouverez ci-dessous la procédure pour ajouter la variable d&#8217;environnement APPLICATION_ENV.

Initialisez votre IIS Manager (touche Windows puis saisir &#171;&#160;iis&#160;&#187; et appuyer sur Return) ;
Dans la zone IIS, double-cliquer sur &#171;&#160;FastCGI Settings&#160;&#187; :
Dans la liste des exécutables [...]]]></description>
			<content:encoded><![CDATA[<p>Si vous développez une application ou un site web avec Zend Framework et que vous souhaitez l&#8217;héberger sous IIS 7.5, vous trouverez ci-dessous la procédure pour ajouter la variable d&#8217;environnement APPLICATION_ENV.</p>
<ol>
<li>Initialisez votre IIS Manager (touche Windows puis saisir &laquo;&nbsp;iis&nbsp;&raquo; et appuyer sur Return) ;</li>
<li>Dans la zone IIS, double-cliquer sur &laquo;&nbsp;FastCGI Settings&nbsp;&raquo; :<a href="http://blog.adenova.fr/wp-content/uploads/2011/07/fastcgi-settings.png"><img class="alignnone size-medium wp-image-149" title="Sélection de FastCGI Settings" src="http://blog.adenova.fr/wp-content/uploads/2011/07/fastcgi-settings-300x89.png" alt="Sélection de FastCGI Settings" width="300" height="89" /></a></li>
<li>Dans la liste des exécutables PHP qui apparaît, double-cliquez sur celle pour laquelle vous souhaitez ajouter la variable d&#8217;environnement APPLICATION_ENV :<a href="http://blog.adenova.fr/wp-content/uploads/2011/07/selection-executable.png"><img class="alignnone size-medium wp-image-150" title="Sélection de l'exécutable PHP" src="http://blog.adenova.fr/wp-content/uploads/2011/07/selection-executable-300x107.png" alt="Sélection de l'exécutable PHP" width="300" height="107" /></a></li>
<li>Dans la zone &laquo;&nbsp;FastCGI Properties&nbsp;&raquo;, sélectionnez &laquo;&nbsp;Environnment Variables&nbsp;&raquo;, puis cliquez sur le bouton de droite :
<p><a href="http://blog.adenova.fr/wp-content/uploads/2011/07/selection-environment-variables.png"><img class="alignnone size-medium wp-image-151" title="Sélection des variables d'environnement" src="http://blog.adenova.fr/wp-content/uploads/2011/07/selection-environment-variables-300x90.png" alt="Sélection des variables d'environnement" width="300" height="90" /></a></li>
<li>Dans la boîte de dialogue, cliquez sur le bouton &laquo;&nbsp;Add&nbsp;&raquo; :
<p><a href="http://blog.adenova.fr/wp-content/uploads/2011/07/ajouter-variable.png"><img class="alignnone size-medium wp-image-152" title="Ajouter une variable" src="http://blog.adenova.fr/wp-content/uploads/2011/07/ajouter-variable-300x221.png" alt="Ajouter une variable" width="300" height="221" /></a></li>
<li>Dans la zone de droite, modifiez la valeur du champ &laquo;&nbsp;Name&nbsp;&raquo; pour la remplacer par &laquo;&nbsp;APPPLICATION_ENV&nbsp;&raquo; :
<p><a href="http://blog.adenova.fr/wp-content/uploads/2011/07/modifier-name-valeur.png"><img class="alignnone size-medium wp-image-153" title="Modifier le nom et la valeur d'une variable" src="http://blog.adenova.fr/wp-content/uploads/2011/07/modifier-name-valeur-300x96.png" alt="Modifier le nom et la valeur d'une variable" width="300" height="96" /></a></li>
<li>Dans le champ &laquo;&nbsp;Value&nbsp;&raquo;, indiquez comme valeur &laquo;&nbsp;development&nbsp;&raquo; :
<p><a href="http://blog.adenova.fr/wp-content/uploads/2011/07/modifier-name-valeur-fin.png"><img class="alignnone size-medium wp-image-154" title="Modification du nom et de la valeur de la variable terminée" src="http://blog.adenova.fr/wp-content/uploads/2011/07/modifier-name-valeur-fin-300x87.png" alt="Modification du nom et de la valeur de la variable terminée" width="300" height="87" /></a></li>
</ol>
<p>Vous pouvez trouver des informations complémentaires à l&#8217;URL ci-dessous :</p>
<p><a href="http://www.iis.net/ConfigReference/system.webServer/fastCgi/application/environmentVariables">http://www.iis.net/ConfigReference/system.webServer/fastCgi/application/environmentVariables</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adenova.fr/2011/07/ajouter-la-variable-denvironnement-application_env-pour-zend-framework-sous-iis-7-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Optimiser le référencement de son site Internet</title>
		<link>http://blog.adenova.fr/2010/02/optimiser-le-referencement-de-son-site-internet/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=optimiser-le-referencement-de-son-site-internet</link>
		<comments>http://blog.adenova.fr/2010/02/optimiser-le-referencement-de-son-site-internet/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 16:28:43 +0000</pubDate>
		<dc:creator>Tayeb SEHAD</dc:creator>
				<category><![CDATA[Référencement]]></category>

		<guid isPermaLink="false">http://blog.adenova.fr/?p=134</guid>
		<description><![CDATA[Cet article est né d’une question posée par un architecte ayant assisté à une conférence réalisée dans le cadre des ateliers numériques. Organisée à la maison de l’architecture et ayant pour objet les sites Internet pour architecte comme vecteur de communication.
J’ai présenté pendant cette soirée l’application Architectes Web Solution créée par notre entreprise Otoo. Cette [...]]]></description>
			<content:encoded><![CDATA[<p>Cet article est né d’une question posée par un architecte ayant assisté à une conférence réalisée dans le cadre des ateliers numériques. Organisée à la maison de l’architecture et ayant pour objet les sites Internet pour architecte comme vecteur de communication.</p>
<p>J’ai présenté pendant cette soirée l’application <a title="Architectes Web Solution" href="http://www.architectes-web-solution.com" target="_blank">Architectes Web Solution</a> créée par notre entreprise <a title="Agence web Otoo" href="http://www.otoo.fr" target="_blank">Otoo</a>. Cette application après avoir été customisée et mise en place, permet aux architectes ou aux agences d’architecture, de gérer les contenus de leur site Internet sans aucune connaissance du développement de sites.</p>
<p>Un des avantages de cette solution est la structuration des sites ainsi produits au référencement naturel. Nous avons envisagé la structuration des sites et l’optimisation du code généré en amont du développement de la plateforme.<br />
La question posée est très pertinente et pouvait être déstabilisante. « Si tous les sites produits sont bien structuré pour un référencement naturel, comment mon site va sortir avant ceux de mes confrères ? »<br />
Je viens ici, rappeler quelques notions nécessaires à un bon référencement naturel.</p>
<h2>Technologies</h2>
<p>Il est important de penser au référencement du site en amont de son développement. Il est primordial que les moteurs de recherche aient accès à toutes les pages du site. De ce fait, il faudra choisir les technologies adéquates. Les éléments  tels le JavaScript et le Flash ne doivent pas être structurants au risque de voir les robots ne pas visiter le site et donc ne pas indexer certains (ou toutes) pages du site. Il est bien évident que notre propos n’est pas de dire qu’il ne faut pas utiliser ces technologies, elles doivent être utilisées à bon escient.</p>
<h2>URL</h2>
<p>Le nom de domaine est un des éléments à prendre en compte dans la stratégie de référencement. Ainsi la présence d&#8217;un mot clé important donnera plus de poids à son référencement. D&#8217;autre part, les noms de pages doivent être très explicites (URL rewriting) et en rapport avec le titre de celle-ci.</p>
<h2>Contenus</h2>
<p>A une requête de recherche sur un moteur de recherche, celui-ci va scruter les pages dont le contenu se rapproche de la demande. Et à partir de ce moment, il devra les classer en fonction de la pertinence. Personne ne connaît précisément les critères de classement, même si on s’accorde à dire que cela dépend de :<br />
-    Nombre d’occurrences dans la page (attention aux abus) ;<br />
-    Présence de cette occurrence dans l’URL, le titre de la page ;<br />
-    Nombre de liens internes vers la page ;<br />
-    Nombre de liens externes vers la page (backlinking) ;</p>
<h3>Mise à jour des contenus</h3>
<p>Un site qui renouvelle ses différents contenus sera mieux noté que ceux qui n’évoluent pas. Cette notion est importante au risque de voir son site dégringoler dans les réponses des moteurs de recherche.</p>
<h3>Organisation du contenu</h3>
<p>Comme on le fait dans nos rédactions, il est judicieux de bien organiser les contenus afin de faciliter la lecture aux visiteurs et aussi aux moteurs de recherche.<br />
Hiérarchiser son contenu en utilisant les balises titres (&lt;h#&gt;) lui conférera une meilleure structure et montrera l’importance des niveaux de titres.<br />
En suivant cette logique, dans un même niveau de texte, si on veut montrer l’importance d’un mot ou d’une phrase, il faudra utiliser la balise de mise en forme « gras » (&lt;strong&gt;).</p>
<h2>Liens</h2>
<p>Les moteurs de recherche vont donner plus d’importance aux pages vers lesquelles plusieurs liens sont trouvés. Ces liens sont encore plus pertinents s’ils sont en haut de page ou si plusieurs endroits du site font référence à cette page. Il est bien sûr recommandé que le texte cliquable soit explicite et contienne les occurrences que l’on souhaite voir inéxées.</p>
<h2>Images</h2>
<p>Les moteurs de recherche ne perçoivent pas les images. Pour leur indiquer la présence des images et ainsi augmenter le contenu de la page, il faudra renseigner la balise de texte alternatif.</p>
<h2>Suivi du référencement du site</h2>
<p>Une fois référencé, il est important de suivre l&#8217;évolution du positionnement et la qualité du trafic. Ceci permettra d&#8217;affiner son référencement en choisissant de nouveaux mots clés et de surveiller ses concurrents.</p>
<h2>Outils</h2>
<p>Plusieurs outils permettent de suivre le positionnement de son site et le trafic généré par les différents mots clés. Certains gratuits comme Google Analytics et les outils pour Webmasters de google peuvent rendre énormément de services.</p>
<h2>L&#8217;achat de mots clés.</h2>
<p>Il peut être judicieux de compléter son référencement naturel par des campagnes d&#8217;achat de clics. Pour qu&#8217;elle reste abordable et efficace, cette étape doit se faire sur des produits spécifiques et sur lesquels la concurrence reste limitée.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adenova.fr/2010/02/optimiser-le-referencement-de-son-site-internet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utiliser iptables pour filtrer l&#8217;accès à votre serveur HTTP</title>
		<link>http://blog.adenova.fr/2009/11/iptables-filtrer-acces-serveur-http/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=iptables-filtrer-acces-serveur-http</link>
		<comments>http://blog.adenova.fr/2009/11/iptables-filtrer-acces-serveur-http/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 15:40:29 +0000</pubDate>
		<dc:creator>Micaël VANHALST</dc:creator>
				<category><![CDATA[Administration Linux]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://blog.adenova.fr/?p=111</guid>
		<description><![CDATA[Le contexte
Voici le contexte dans lequel nous nous trouvons dans le cadre de cet article :

un modem routeur qui effectue du NAT (Network Address Translation) de l&#8217;Internet vers un serveur HTTP du réseau local (le traffic entrant sur le port 80 est redirigé vers le port 80 du serveur du réseau local) ;
un serveur Linux [...]]]></description>
			<content:encoded><![CDATA[<h1>Le contexte</h1>
<p>Voici le contexte dans lequel nous nous trouvons dans le cadre de cet article :</p>
<ul>
<li>un modem routeur qui effectue du NAT (Network Address Translation) de l&#8217;Internet vers un serveur HTTP du réseau local (le traffic entrant sur le port 80 est redirigé vers le port 80 du serveur du réseau local) ;</li>
<li>un serveur Linux (Fedora Core 9) hébergeant de multiples services dont un serveur HTTP (Apache 2.2.9) ;</li>
<li>sur ce même serveur, nous trouvons également le services iptables que nous allons utiliser pour mettre en place notre filtrage.</li>
</ul>
<h1>L&#8217;objectif</h1>
<p>L&#8217;objectif de cet article est d&#8217;utiliser iptables de notre serveur pour limiter l&#8217;accès au service HTTP, en se basant sur les adresses IP transportées par les paquets réseau entrants.</p>
<h1>Modifier les règles iptables</h1>
<p>Connectez-vous en mode console (via un client SSH par exemple) à votre serveur pour y modifier les règles iptables.</p>
<p>Les règles iptables sont réparties en chaînes :</p>
<ul>
<li>INPUT : règles agissant sur les paquets réseau entrants sur le serveur ;</li>
<li>FORWARD : règles agissant sur les paquets réseau passant d&#8217;une interface réseau à une autre (d&#8217;un serveur à un autre par exemple) ;</li>
<li>OUTPUT : règles agissant sur les paquets réseau sortants du serveur.</li>
</ul>
<p>Dans notre cas, nous allons créer plusieurs règles iptables au sein de la chaîne INPUT, puisqu&#8217;il s&#8217;agit de filtrer les paquets réseau entrants.</p>
<h2>Sauvegarder</h2>
<p>Avant d&#8217;aller plus loin, nous allons avant tout procéder à la sauvegarde des règles iptables existantes, on ne sait jamais&#8230;</p>
<p>Pour cela, utiliser la ligne de commande qui suit :</p>
<pre>iptables-save &gt; /etc/iptables-save</pre>
<p>En cas de problème, pour restaurer, vous pourrez utiliser la commande suivante :</p>
<pre>iptables-restore &lt; /etc/iptables-save</pre>
<h2>Lister les règles courantes</h2>
<p>Pour visualiser la liste des règles iptables en place, utiliser la commande :</p>
<pre>iptables -L</pre>
<p>Cette commande vous permettra ainsi de visualiser les modifications apportées à vos règles iptables.</p>
<h2>Ajouter les règles nécessaires au filtrage</h2>
<p>Les règles iptables sont lues de haut en bas. Il faut donc insérer en haut de la liste des règles, nos nouvelles règles iptables afin qu&#8217;elles écrasent éventuellement celles qui ne nous conviennent plus.</p>
<p>Nous commençons par ajouter une règle iptables pour rejeter tous les accès HTTP à notre serveur (port 80) :</p>
<pre>iptables -I INPUT -p tcp --dport 80 -j REJECT</pre>
<p>L&#8217;option -I INPUT permet <strong>d&#8217;insérer</strong> la nouvelle règle en haut de la liste de la chaîne INPUT. L&#8217;option -p tcp permet de préciser le protocole et l&#8217;option &#8211;dport 80 indique le port de destination, dans notre cas, le port 80, celui qui correspond généralement au service HTTP. Enfin, la dernière option -j REJECT, indique le saut (ou l&#8217;action à accomplir si les conditions sont remplies) qui doit être fait. Dans notre cas, nous demandons le rejet. Nous aurions aussi pu indiquer DROP, mais il semble que REJECT soit plus propre&#8230;</p>
<p>Ensuite, nous ajoutons une règle iptables pour autoriser les machines du réseau local à se connecter à ce serveur HTTP :</p>
<pre>iptables -I INPUT -s 192.168.0.0/24 -p tcp --dport 80 -j ACCEPT</pre>
<p>L&#8217;option -s 192.168.0.0/24 permet d&#8217;indiquer la source concernée. Dans notre cas, nous indiquons toutes les machines du réseau local. Le masque /24, indique que seul la dernière partie de la plage IP est variable. On accepte donc les IP du genre : 192.168.0.1, 192.168.0.2, 192.168.0.3, etc., jusqu&#8217;à 192.168.0.254 (255 valeurs possibles en tout).</p>
<p>Pour terminer, vous pouvez ajouter une règle iptables pour chaque adresse IP que vous souhaitez autoriser en accès à notre serveur HTTP :</p>
<pre>iptables -I INPUT -s XXX.XXX.XXX.XXX -p tcp --dport 80 -j ACCEPT</pre>
<p>En effectuant :</p>
<pre>iptables -L</pre>
<p>Vous devriez voir apparaître vos nouvelles règles iptables en haut de la liste, au sein de la chaîne INPUT.</p>
<p>Vous pouvez sauvegarder vos règles iptables modifiées de cette façon :</p>
<pre>iptables-save &gt; /etc/iptables-save-updated</pre>
<h2>Mémoriser les nouvelles règles</h2>
<p>La distribution Linux Fedora Core 9 donne la possibilité de mémoriser facilement (et définitivement) vos règles iptables modifiées :</p>
<pre>service iptables save</pre>
<p>Cette opération doit impérativement être faite pour que les règles iptables soient conservées, même après un reboot de votre serveur.</p>
<h2>Redémarrer le service iptables</h2>
<p>Pour prendre en compte immédiatement les nouvelles règles, redémarrez le service iptables :</p>
<pre>service iptables restart</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.adenova.fr/2009/11/iptables-filtrer-acces-serveur-http/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Contr&#244;leur invalide et fichier manquant avec Zend Framework</title>
		<link>http://blog.adenova.fr/2009/07/controleur-invalide-et-fichier-manquant-avec-zend-framework/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=controleur-invalide-et-fichier-manquant-avec-zend-framework</link>
		<comments>http://blog.adenova.fr/2009/07/controleur-invalide-et-fichier-manquant-avec-zend-framework/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 12:52:00 +0000</pubDate>
		<dc:creator>Micaël VANHALST</dc:creator>
				<category><![CDATA[Développement PHP]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[controller]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://blog.adenova.fr/?p=71</guid>
		<description><![CDATA[Contrôleur non trouvé
Une erreur peut se produire et rendre le comportement de votre application inattendue lorsqu’un fichier est manquant. Ce fichier peut être une image, une feuille de styles CSS, un favicon.ico ou tout autre généralement placé dans le répertoire /public de l’arborescence du framework.
L’erreur retournée est levée par une exception du type Zend_Controller_Dispatcher_Exception et [...]]]></description>
			<content:encoded><![CDATA[<h1>Contrôleur non trouvé</h1>
<p>Une erreur peut se produire et rendre le comportement de votre application inattendue lorsqu’un fichier est manquant. Ce fichier peut être une image, une feuille de styles CSS, un favicon.ico ou tout autre généralement placé dans le répertoire /public de l’arborescence du framework.</p>
<p>L’erreur retournée est levée par une exception du type Zend_Controller_Dispatcher_Exception et retourne le message ci-dessous (exemple d’un fichier favicon.ico manquant) :</p>
<p>Zend_Controller_Dispatcher_Exception: Invalid controller specified (favicon.ico)</p>
<p>Le plus simple est dans ce cas d’ajouter le fichier manquant.</p>
<h1>Principe des règles de réécriture d’URL</h1>
<h2>Fichier .htaccess</h2>
<p>La raison de ce problème vient des règles de réécriture d’URL telles que proposées sur le site de Zend Framework à l’URL <a title="http://framework.zend.com/manual/fr/zend.controller.router.html" href="http://framework.zend.com/manual/fr/zend.controller.router.html" target="_blank">http://framework.zend.com/manual/fr/zend.controller.router.html</a>.</p>
<p>Ci-dessous les règles de réécriture pour Apache, à placer dans un fichier .htaccess, dans le répertoire /public de l’application :</p>
<div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="apache" style="font-family:monospace;"><span class="kw1">RewriteEngine</span> <span class="kw2">On</span>
<span class="kw1">RewriteCond</span> %{REQUEST_FILENAME} -s [OR]
<span class="kw1">RewriteCond</span> %{REQUEST_FILENAME} -l [OR]
<span class="kw1">RewriteCond</span> %{REQUEST_FILENAME} -d
<span class="kw1">RewriteRule</span> ^.*$ - [NC,L]
<span class="kw1">RewriteRule</span> ^.*$ index.php [NC,L]</pre></div></div></pre>
<p>Regardons rapidement ensemble les directives ci-dessus.</p>
<h2>Directive RewriteEngine</h2>
<p>La première directive RewriteEngine est placée à la valeur On. Elle active simplement le moteur de réécriture d’URL d’Apache.</p>
<h2>Directives RewriteCond</h2>
<p>Les directives commençant par RewriteCond vont conditionner l’exécution de la directive RewriteRule qui suit.</p>
<p>Dans notre cas, le test se fait sur la variable serveur REQUEST_FILENAME qui contient le chemin d’accès absolu à un script ou un fichier correspondant à la requête courante.</p>
<p>Cette chaîne à tester est immédiatement suivie de la condition à effectuer.</p>
<p>La condition <strong>-s</strong> (is regular file with <strong>s</strong>ize) permet de vérifier l’existence d’un fichier dont le poids est strictement supérieur à 0 octet.</p>
<p>La condition <strong>-l</strong> (symbolic <strong>l</strong>ink) permet de vérifier l’existence d’un lien symbolique.</p>
<p>La condition <strong>-d</strong> (is <strong>d</strong>irectory) permet de vérifier l’existence d’un répertoire.</p>
<p>Par défaut, les conditions imposées par les directives RewriteCond se combinent (AND). Si l’on souhaite tester une des conditions, il faut alors placer le flag [OR] en fin de directive.</p>
<h2>Directives RewriteRule</h2>
<p>Les directives RewriteRule sont celles qui définissent la règle de réécriture elle-même.</p>
<p>La première d’entre elles :</p>
<div id="wpshdo_2" class="wp-synhighlighter-outer"><div id="wpshdt_2" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_2"></a><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><pre class="apache" style="font-family:monospace;"><span class="kw1">RewriteRule</span> ^.*$ - [NC,L]</pre></div></div></pre>
<p>ne fait qu’indiquer qu’il ne faut rien faire (c’est ce qu’indique le tiret placé juste avant les flags NC et L) si les conditions imposées par les directives RewriteCond qui précèdent sont remplies.</p>
<p>La suivante :</p>
<div id="wpshdo_3" class="wp-synhighlighter-outer"><div id="wpshdt_3" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_3"></a><a id="wpshat_3" class="wp-synhighlighter-title" href="#codesyntax_3"  onClick="javascript:wpsh_toggleBlock(3)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_3" onClick="javascript:wpsh_code(3)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_3" onClick="javascript:wpsh_print(3)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_3" class="wp-synhighlighter-inner" style="display: block;"><pre class="apache" style="font-family:monospace;"><span class="kw1">RewriteRule</span> ^.*$ index.php [NC,L]</pre></div></div></pre>
<p>qui sera exécutée dans tous les autres cas redirige vers le Front Controller de notre application, c’est-à-dire le fichier index.php.</p>
<p>Ces directives possèdent dans notre cas des flags (ils apparaissent entre crochets).</p>
<p>Le flag NC correspond à No Case, ce qui rend la comparaison insensible à la casse.</p>
<p>Le flag L correspond à Last. Ceci signifie que si la règle de réécriture correspondante est réalisée, alors toutes celles qui suivent ne seront pas interprétées.</p>
<h1>Modifier les règles de réécriture d’URL</h1>
<p>De façon plus générale, et afin d’éviter les levées d’exceptions, je vous propose de modifier votre fichier .htaccess comme ci-dessous :</p>
<div id="wpshdo_4" class="wp-synhighlighter-outer"><div id="wpshdt_4" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_4"></a><a id="wpshat_4" class="wp-synhighlighter-title" href="#codesyntax_4"  onClick="javascript:wpsh_toggleBlock(4)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_4" onClick="javascript:wpsh_code(4)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_4" onClick="javascript:wpsh_print(4)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_4" class="wp-synhighlighter-inner" style="display: block;"><pre class="apache" style="font-family:monospace;"><span class="kw1">RewriteEngine</span> <span class="kw2">On</span>
<span class="kw1">RewriteRule</span> ^\/?styles.*$ - [NC,L]
<span class="kw1">RewriteRule</span> ^\/?media.*$ - [NC,L]
<span class="kw1">RewriteRule</span> ^\/?js.*$ - [NC,L]
<span class="kw1">RewriteCond</span> %{REQUEST_FILENAME} -s [OR]
<span class="kw1">RewriteCond</span> %{REQUEST_FILENAME} -l [OR]
<span class="kw1">RewriteCond</span> %{REQUEST_FILENAME} -d
<span class="kw1">RewriteRule</span> ^.*$ - [NC,L]
<span class="kw1">RewriteRule</span> ^.*$ index.php [NC,L]</pre></div></div></pre>
<p>Le principe est de regarder tous les répertoires qui sont placés dans le répertoire /public de votre application puis d’utiliser des directives RewriteRule pour indiquer que ces répertoires et tout ce qui s’y trouve ne doivent pas être redirigé vers le Front Controller (index.php). Ils continueront ainsi à être considérés comme des répertoires et des fichiers, même si l’un d’entre eux n’existe pas.</p>
<p>C’est ce que je viens de faire en ajoutant les trois directives ci-dessous :</p>
<div id="wpshdo_5" class="wp-synhighlighter-outer"><div id="wpshdt_5" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_5"></a><a id="wpshat_5" class="wp-synhighlighter-title" href="#codesyntax_5"  onClick="javascript:wpsh_toggleBlock(5)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_5" onClick="javascript:wpsh_code(5)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_5" onClick="javascript:wpsh_print(5)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_5" class="wp-synhighlighter-inner" style="display: block;"><pre class="apache" style="font-family:monospace;"><span class="kw1">RewriteRule</span> ^\/?styles.*$ - [NC,L]
<span class="kw1">RewriteRule</span> ^\/?media.*$ - [NC,L]
<span class="kw1">RewriteRule</span> ^\/?js.*$ - [NC,L]</pre></div></div></pre>
<p>à mon fichier .htaccess.</p>
<p>Dans mon cas, ces réécritures d’URL ont été faites pour les répertoires styles, media et js.</p>
<p>Les expressions régulières utilisées pour trouver les chaînes de texte se décomposent comme suit :</p>
<p>^ pour indiquer le début de la chaîne ;</p>
<p>\/? pour indiquer la présence facultative du / de début de chaîne ;</p>
<p>.* pour indiquer n’importe quel caractère (présent ou non) ;</p>
<p>$ pour indiquer la fin de la chaîne.</p>
<p>Entre ^\/? et .*$, se trouve le nom du répertoire à traiter.</p>
<h1>Conclusion</h1>
<p>Du coup, avec ces nouvelles règles de réécriture d’URL, lorsqu’on essaie d’accéder à un répertoire ou à un fichier contenu dans styles, media ou js, une erreur 404 (page manquante) est retournée par Apache. A vous de la traiter correctement pour obtenir un résultat professionnel !</p>
<p>Ces ajouts dans le fichier .htaccess nous permettent surtout d’éviter des problèmes lors de l’emploi des méthodes du Zend Framework qui manipulent les requêtes HTTP, comme getRequestUri() ou bien d’autres.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adenova.fr/2009/07/controleur-invalide-et-fichier-manquant-avec-zend-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installer PHPUnit sous WAMP</title>
		<link>http://blog.adenova.fr/2009/07/installer-phpunit-sous-wamp/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=installer-phpunit-sous-wamp</link>
		<comments>http://blog.adenova.fr/2009/07/installer-phpunit-sous-wamp/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 14:23:46 +0000</pubDate>
		<dc:creator>Micaël VANHALST</dc:creator>
				<category><![CDATA[Développement PHP]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpunit]]></category>
		<category><![CDATA[tests unitaires]]></category>
		<category><![CDATA[wamp]]></category>

		<guid isPermaLink="false">http://blog.adenova.fr/?p=61</guid>
		<description><![CDATA[Préambule
Cet article explique comment installer le framework PHPUnit fréquemment utilisé pour les tests unitaires des applications PHP. Cet article part également du principe que l’installation de WAMP est effectuée.
Etape 1 : installation de PEAR
Voici, en quelques étapes, comment installer PHPUnit sous WAMP. Nous allons utiliser PEAR pour procéder à cette installation. Il faut donc l’installer. [...]]]></description>
			<content:encoded><![CDATA[<h1><strong>Préambule</strong></h1>
<p>Cet article explique comment installer le framework PHPUnit fréquemment utilisé pour les tests unitaires des applications PHP. Cet article part également du principe que l’installation de WAMP est effectuée.</p>
<h1><strong>Etape 1 : installation de PEAR</strong></h1>
<p>Voici, en quelques étapes, comment installer PHPUnit sous WAMP. Nous allons utiliser PEAR pour procéder à cette installation. Il faut donc l’installer. Evidemment, si c’est déjà fait, vous passer directement à l’étape 2 (installation de PHPUnit avec PEAR).</p>
<p>1. Ouvrir une invite de commande (pour aller plus vite, sous Windows Vista ou 7, saisir simplement « cmd » dans le champ de recherche du menu « Démarrer » puis appuyer sur la touche « Entrée » du clavier) ;</p>
<p>2. Se déplacer dans le répertoire contenant le binaire PHP de WAMP. Dans mon cas, cela revient à faire la commande qui suit :</p>
<div id="wpshdo_6" class="wp-synhighlighter-outer"><div id="wpshdt_6" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_6"></a><a id="wpshat_6" class="wp-synhighlighter-title" href="#codesyntax_6"  onClick="javascript:wpsh_toggleBlock(6)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_6" onClick="javascript:wpsh_code(6)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_6" onClick="javascript:wpsh_print(6)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_6" class="wp-synhighlighter-inner" style="display: block;"><pre class="dos" style="font-family:monospace;">C:\<a href="http://www.ss64.com/nt/cd.html"><span class="kw3">cd</span></a> C:\wamp\bin\php\php5.2.9-<span class="nu0">2</span></pre></div></div>
<p>3. Lancer ensuite le fichier « go-pear.bat » ;</p>
<p>4. Quelques questions vous sont ensuite posées. Laisser les valeurs par défaut (à moins que vous ne sachiez exactement ce que vous êtes en train de faire).</p>
<p>5. A la fin de l’installation de PEAR, un fichier PEAR_ENV.reg est créé dans le même répertoire. Il faut le lancer pour créer les variables d’environnement nécessaires au fonctionnement de PEAR. Deux solutions sont possibles pour cela : soit en ligne de commande avec :</p>
<div id="wpshdo_7" class="wp-synhighlighter-outer"><div id="wpshdt_7" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_7"></a><a id="wpshat_7" class="wp-synhighlighter-title" href="#codesyntax_7"  onClick="javascript:wpsh_toggleBlock(7)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_7" onClick="javascript:wpsh_code(7)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_7" onClick="javascript:wpsh_print(7)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_7" class="wp-synhighlighter-inner" style="display: block;"><pre class="dos" style="font-family:monospace;">C:\wamp\bin\php\php5.2.9-<span class="nu0">2</span>&gt;PEAR_ENV.reg</pre></div></div>
<p>Ou alors en vous rendant dans le répertoire en question, puis en double cliquant sur le fichier PEAR_ENV.reg.</p>
<h1>Etape 2 : installation de PHPUnit avec PEAR</h1>
<p>Voici ci-dessous comment procéder à cette installation.</p>
<p>1. Indiquer à PEAR le channel de PHPUnit :</p>
<div id="wpshdo_8" class="wp-synhighlighter-outer"><div id="wpshdt_8" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_8"></a><a id="wpshat_8" class="wp-synhighlighter-title" href="#codesyntax_8"  onClick="javascript:wpsh_toggleBlock(8)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_8" onClick="javascript:wpsh_code(8)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_8" onClick="javascript:wpsh_print(8)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_8" class="wp-synhighlighter-inner" style="display: block;"><pre class="dos" style="font-family:monospace;">C:\wamp\bin\php\php5.2.9-<span class="nu0">2</span>&gt;pear channel-discover pear.phpunit.de</pre></div></div>
<p>Avant de passer à l’étape qui suit, vous aurez peut-être besoin de mettre à jour la version de PEAR et d’autres packages déjà installés.</p>
<p>Si nécessaire, vous pouvez le faire avec la commande :</p>
<div id="wpshdo_9" class="wp-synhighlighter-outer"><div id="wpshdt_9" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_9"></a><a id="wpshat_9" class="wp-synhighlighter-title" href="#codesyntax_9"  onClick="javascript:wpsh_toggleBlock(9)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_9" onClick="javascript:wpsh_code(9)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_9" onClick="javascript:wpsh_print(9)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_9" class="wp-synhighlighter-inner" style="display: block;"><pre class="dos" style="font-family:monospace;">C:\wamp\bin\php\php5.2.9-<span class="nu0">2</span>&gt;pear upgrade-all</pre></div></div>
<p>2. Installer le package PHPUnit :</p>
<div id="wpshdo_10" class="wp-synhighlighter-outer"><div id="wpshdt_10" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_10"></a><a id="wpshat_10" class="wp-synhighlighter-title" href="#codesyntax_10"  onClick="javascript:wpsh_toggleBlock(10)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_10" onClick="javascript:wpsh_code(10)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_10" onClick="javascript:wpsh_print(10)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_10" class="wp-synhighlighter-inner" style="display: block;"><pre class="dos" style="font-family:monospace;">C:\wamp\bin\php\php5.2.9-<span class="nu0">2</span>&gt;pear install -a phpunit/PHPUnit</pre></div></div>
<p>L’option « -a » derrière la commande « install » est importante. Elle permet de forcer l’installation de tous les autres packages dont dépend PHPUnit.</p>
<p>Pour vérifier que l’installation s’est correctement effectuée, vous pouvez saisir la commande :</p>
<div id="wpshdo_11" class="wp-synhighlighter-outer"><div id="wpshdt_11" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_11"></a><a id="wpshat_11" class="wp-synhighlighter-title" href="#codesyntax_11"  onClick="javascript:wpsh_toggleBlock(11)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_11" onClick="javascript:wpsh_code(11)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_11" onClick="javascript:wpsh_print(11)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_11" class="wp-synhighlighter-inner" style="display: block;"><pre class="dos" style="font-family:monospace;">C:\wamp\bin\php\php5.2.9-<span class="nu0">2</span>&gt;pear list -a</pre></div></div>
<p>L’option « -a » derrière la commande « list » permet de lister les packages de tous les channels.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adenova.fr/2009/07/installer-phpunit-sous-wamp/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Configurer VS.Php pour déboguer une application PHP</title>
		<link>http://blog.adenova.fr/2009/07/configurer-vs-php-deboguer-application-php/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=configurer-vs-php-deboguer-application-php</link>
		<comments>http://blog.adenova.fr/2009/07/configurer-vs-php-deboguer-application-php/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 20:38:01 +0000</pubDate>
		<dc:creator>Micaël VANHALST</dc:creator>
				<category><![CDATA[Développement PHP]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[visual studio]]></category>
		<category><![CDATA[wamp]]></category>
		<category><![CDATA[xdebug]]></category>

		<guid isPermaLink="false">http://blog.adenova.fr/?p=3</guid>
		<description><![CDATA[Dans cet article, je vous montre comment configurer VS.Php et WAMP pour assurer le débogage d'un site ou d'une application développé en PHP 5.]]></description>
			<content:encoded><![CDATA[<h1>Préambule</h1>
<p>Avant de commencer, il est important que je vous précise que cet article n’est pas destiné à expliquer comment s’effectue le débogage d’une application avec VS.Php, ni même son fonctionnement.</p>
<p>Nous allons surtout voir ensemble en quelques étapes comment arriver à configurer VS.Php et WAMP pour pouvoir déboguer une application ou un site développé avec PHP 5.</p>
<p>Ceci dit, j’essaierai de faire un autre article sur l’utilisation du débogage avec VS.Php.</p>
<h1>Étape 1 : installer et activer XDEBUG</h1>
<h2>Récupérer l’extension XDEBUG</h2>
<p>Pour cela, il faut récupérer un fichier DLL à l’URL : <a href="http://www.xdebug.org/download.php" target="_blank">http://www.xdebug.org/download.php</a>.</p>
<p>Dans les sections « Windows binaries », trouvez la version qui correspond à votre installation. Par exemple, dans mon cas, la version de PHP installée avec mon WAMP est la 5.2.9-2. J’ai donc choisi comme version de XDEBUG : « 5.2 VC6 (32 bit) ».</p>
<p>Pour vérifier si votre installation est en mode NTS (Non Thread Safe) ou pas, afficher simplement le phpinfo() à partir de la zone « Outils » de la page d’accueil de WAMPSERVER.</p>
<div id="attachment_32" class="wp-caption alignnone" style="width: 188px"><img class="size-full wp-image-32" title="Accéder à phpinfo() à partir de l'accueil de WAMP" src="http://blog.adenova.fr/wp-content/uploads/2009/07/wamp-phpinfo1.jpg" alt="Accéder à phpinfo() à partir de l'accueil de WAMP" width="178" height="93" /><p class="wp-caption-text">Accéder à phpinfo() à partir de l&#39;accueil de WAMP</p></div>
<p>Si « Thread Safety » est « enabled », alors vous n’êtes pas en « Non Thread Safe ». Dans le cas contraire, vous êtes en mode « Non Thread Safe », il faudra alors télécharger la version « 5.2 VC6 Non-thread-safe (32 bit) » de XDEBUG.</p>
<div id="attachment_33" class="wp-caption alignnone" style="width: 283px"><img class="size-full wp-image-33" title="Vérification du mode d'exécution de PHP" src="http://blog.adenova.fr/wp-content/uploads/2009/07/thread-safe1.jpg" alt="Vérification du mode d'exécution de PHP" width="273" height="136" /><p class="wp-caption-text">Vérification du mode d&#39;exécution de PHP</p></div>
<h2>Placer l’extension</h2>
<p>Il faut ensuite placer le fichier DLL récupéré (« php_xdebug-2.0.5-5.2.dll » pour moi) dans le répertoire d&#8217;exécution de PHP. Dans mon cas, ce répertoire est « C:\wamp\bin\php\php5.2.9-2 ».</p>
<h2>Modification du « php.ini »</h2>
<p>Il faut ensuite modifier le fichier « php.ini » géré par WAMP pour lui ajouter les directives qui suivent. Pour ouvrir le fichier « php.ini », le plus rapide est de passer par le menu d’administration de WAMP en sélectionnant « PHP » puis « php.ini ».</p>
<p>Voici les lignes à ajouter (en fin de fichier pour faire simple) :</p>
<div id="wpshdo_12" class="wp-synhighlighter-outer"><div id="wpshdt_12" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_12"></a><a id="wpshat_12" class="wp-synhighlighter-title" href="#codesyntax_12"  onClick="javascript:wpsh_toggleBlock(12)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_12" onClick="javascript:wpsh_code(12)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_12" onClick="javascript:wpsh_print(12)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.adenova.fr/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_12" class="wp-synhighlighter-inner" style="display: block;"><pre class="ini" style="font-family:monospace;"><span class="re1">zend_extension_ts</span> <span class="sy0">=</span><span class="re2"> C:/wamp/bin/php/php5.2.9-<span class="nu0">2</span>/php_xdebug-2.0.5-5.2.dll</span>
<span class="re0"><span class="br0">&#91;</span>XDebug<span class="br0">&#93;</span></span>
xdebug.idekey <span class="sy0">=</span><span class="re2"> vsphp</span>
xdebug.remote_enable <span class="sy0">=</span><span class="re2"> 1</span>
xdebug.remote_port <span class="sy0">=</span><span class="re2"> 7870</span>
xdebug.remote_autostart <span class="sy0">=</span><span class="re2"> 1</span></pre></div></div>
<p>Pour plus d’informations sur ces directives, vous pouvez consulter l’URL (en anglais) : <a href="http://www.xdebug.org/docs/remote" target="_blank">http://www.xdebug.org/docs/remote</a>.</p>
<p>En gros, nous venons d&#8217;indiquer à l&#8217;extension XDEBUG qu&#8217;elle peut écouter les connexions distantes sur le port 7870.</p>
<p>Pour que ces modifications soient prises en compte, il faut évidemment redémarrer le service Apache de WAMP.</p>
<p>Attention, le chemin d&#8217;accès à l&#8217;extension XDEBUG peut varier en fonction de votre installation, et en particulier en fonction de la version installée de PHP.</p>
<p>Pour vérifier que l’extension a bien été prise en compte, afficher à nouveau le phpinfo() de WAMP. Si une zone « xdebug » apparaît, c’est que l’extension est correctement installée.</p>
<div id="attachment_34" class="wp-caption alignnone" style="width: 459px"><img class="size-full wp-image-34" title="Vérification de l'activation de l'extension XDEBUG dans phpinfo()" src="http://blog.adenova.fr/wp-content/uploads/2009/07/phpinfo-xdebug.jpg" alt="Vérification de l'activation de l'extension XDEBUG dans phpinfo()" width="449" height="119" /><p class="wp-caption-text">Vérification de l&#39;activation de l&#39;extension XDEBUG dans phpinfo()</p></div>
<h1>Étape 2 : configurer VS.Php</h1>
<p>Pour accéder au débogage à partir de VS.Php en utilisant un alias ou un virtual host d&#8217;une application ou d&#8217;un site hébergé par WAMP, il faut également procéder à quelques réglages de configuration dans VS.Php.</p>
<h2>Ouvrir votre projet VS.Php</h2>
<p>La première chose à faire est d&#8217;ouvrir le projet VS.Php de votre application ou de votre site PHP. En effet, sous VS.Php les paramètres de configuration du débogage, comme pour ceux du déploiement, sont attachés au projet.</p>
<h2>Modifier les paramètres de configuration pour le débogage</h2>
<p>Il faut maintenant indiquer à VS.Php comment il doit initialiser le débogage de notre application ou de notre site.</p>
<p>Dans Visual Studio, il faut pour cela accéder à la commande « Propriétés de votre projet&#8230; » du menu « Projet ».</p>
<p>Pour terminer, il ne reste plus qu&#8217;à renseigner les deux panneaux « General » et « Advanced » de la zone de configuration « Debug » comme ci-dessous.</p>
<div id="attachment_56" class="wp-caption alignnone" style="width: 550px"><img class="size-full wp-image-56" title="Configuration générale du débogage" src="http://blog.adenova.fr/wp-content/uploads/2009/07/vsphp-config-12.jpg" alt="Configuration générale du débogage" width="540" height="162" /><p class="wp-caption-text">Configuration générale du débogage</p></div>
<p>Le champ « Start Url » doit contenir l&#8217;alias ou le virtual host de votre site ou de votre application défini dans WAMP.</p>
<div id="attachment_57" class="wp-caption alignnone" style="width: 550px"><img class="size-full wp-image-57" title="Configuration avancée du débogage" src="http://blog.adenova.fr/wp-content/uploads/2009/07/vsphp-config-21.jpg" alt="Configuration avancée du débogage" width="540" height="154" /><p class="wp-caption-text">Configuration avancée du débogage</p></div>
<p>Le plus important ici, c&#8217;est que le port indiqué dans le champ « Debug client port number » corresponde à celui placé toute à l&#8217;heure dans la directive « xdebug.remote_port » du « php.ini ».</p>
<p>Il ne reste plus qu&#8217;à valider le tout en cliquant sur le bouton OK et à appuyer sur F5 pour lancer le débogage.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; width: 1px; height: 1px; top: 285px; left: -10000px;"><img src="file:///C:/DOCUME%7E1/MICALV%7E1/LOCALS%7E1/Temp/moz-screenshot.jpg" alt="" /></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.adenova.fr/2009/07/configurer-vs-php-deboguer-application-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

