Créer le vhost (exemple dans le PDF ci dessus) dans sites-avalaible puis lien symbolique dans sites-enabled via l’ordre ln -s ../site-avalaible/nomdelaconf nomdelaconf.conf
Le principe est de comprendre comment fonctionne xdebug sinon vous n’arriverez jamais à faire du pas à pas en Php.
L’idée plutôt bizarre mais fonctionne très bien, et ça semble le moyen le plus efficace pour y arriver.
Voici comment fonctionne une session de déboguage et après vous pourrez en déduire ce qu’il faut pour avancer :
Le client Web = Chrome demande une page en précisant qu’il veut faire du débogague pas à pas (ajouter dans l’URL XDEBUG_SESSION_START=1 (c’est la valeur xdebug par défaut))
Lorsque cela arrive sur le serveur Apache, ce dernier fait passer la demande à toutes les librairies liées à Apache, comme d’habitude. Ici, parmi celles qui l’ont demandé, il y a xdebug
Là, xdebug voit XDEBUG_SESSION_START=1. Il va alors essayer de se connecter au serveur de déboguage qu’on a configuré via ces directives dans php.ini : zend_extension=/chemincomplet/xdebug.so xdebug.remote_enable=1 xdebug.remote_host=127.0.0.1 xdebug.remote_port=9000
Oui j’insiste bien : Apache devient un client, et se connecte à un serveur de déboguage
C’est pourquoi dans vim, même si, comme moi, vous arrivez à installer correctement l’extension pour faire du pas à pas Vdebug, tant que vous n’aurez pas compris ce que j’explique juste avant, vous n’arriverez pas à faire du pas à pas
Donc dernière étape : je vous explique l’ordre correct de lancement des applications pour réussir à déboguer :
Préparer l’URL concernée dans le navigateur avec le paramètre XDEBUG_SESSION_START=1
Appuyez sur <F5> dans vim afin qu’il se mette en mode serveur et qu’il attende une connexion. Là un message vous affiche qu’il attend 20s.
Allez dans le navigateur et validez l’URL (entrée ou ‘Refresh’)
Regardez vim: automatiquement il passe en mode pas à pas ! C’est magique, génial, efficace et la crème de la crème : vous pouvez déboguer directement sur un serveur distant quand vous connaissez vim. Le top.
Une fois en mode débogage, voici les raccourcis possibles :
<F5> : start/run (jusqu’au prochain breakpoint/ou fin du script) <F2> : pas par dessus <F3> : pas entrant dans la fonction <F4> : sauter à la fin de la fonction <F6> : stopper le déboguage <F7> : detacher le script du débogueur <F9> : continuer jusqu’au curseur <F10> : mettre un breakpoint <F11> : voir les variables du contexte (p.ex. après « eval ») <F12> : évaluer une variable sous le curseur :Breakpoint <type> <args>: mettre un breakpoint de n’importe quel type (voir :help VdebugBreakpoints) :VdebugEval <code> : évaluer du code et afficher le résultat <Leader>e : évaluer l’expression sous le curseur et afficher le résultat
Pour arrêter le déboguage, appuyez sur <F6>. Appuyez encore une fois pour fermer l’interface de déboguage.
If you can’t get a connection, then chances are you need to spend a bit of time setting up your environment. Type :help Vdebug for more information.
Voici une capture de vim / débogage de mon blog WordPress. En plus, en faisant du pas à pas dans WordPress, j’ai appris énormément de choses… Maintenant, à vous de jouer !
On m’a demandé à quoi servaient les entête de cache. J’ai expliqué que ça servait à s’assurer que les interrogations AJAX se feraient toujours (notez le futur), c’est à dire à demander au navigateur de ne rien garder en cache.
Comme toujours, ma mémoire me fait défaut mais mon expérience reste, et je savais qu’il faut éviter tout risque de problème cache.
J’ai retrouvé une explication concrète du problème : certaines versions du navigateur Safari sur iOS6 ne réinterrogent pas les appels AJAX.
Il suffit donc de faire deux choses :
Soit modifier la configuration Apache (c’est pour ça que j’ai consacré quelques heures sur les hôtes virtuels et leur configuration) pour qu’il y ait ces entêtes par défaut : Header set Cache-Control "no-cache"
Soit faire ma solution directement en Php (mais ça implique de le faire dans tous les retours AJAX – ce qui ne gêne en rien pour les petits projets)
Soit préciser en JavaScript de modifier le header : $.ajaxSetup({
type: 'POST',
headers: { "cache-control": "no-cache" }
});
Toutes les solutions sont prises via le site de questions/réponses de reférence : en Anglais ici.
Problème :
Chercher une variable dans les paramètres _GET, y compris en plein milieu (les solutions en général ne sont valides que si la variable est au début dans le _GET) Solution : RewriteCond %{QUERY_STRING} (^|&)nomvariable=valeur(&|$)
Problème :
Prendre en compte toute une séquence de caractères sauf le slash Solution : RewriteRule ^/([^/]+)/?$ page.php?page=$1 [L]
ou encore prendre tout sauf le slash et le point : RewriteRule ^/([^/\.]+)/?$ page.php?page=$1 [L]
J’ai mis un peu de temps avant de le comprendre, mais c’est peut être parce que pour certains esprits comme le mien ça n’est pas forcément évident.
En résumé :
Effacer toutes les options et n’activer que FollowSymLinks :
Options FollowSymLinks
Ajouter à toutes les options, l’option FollowSymLinks :
Options +FollowSymLinks
Supprimer, si elle existe, l’option FollowSymLinks :
Options -FollowSymLinks
Explication détaillée :
Lorsqu’on met en place une directive "Directory" dans le fichier de configuration d’un serveur Web Apache, on peut y ajouter la directive "Options".
Par exemple :
Ce qu’il faut avoir en tête c’est que le fait de mettre un ordre après Options efface toutes les directives Options précédentes et n’applique que les ordres qui suivent.
Cela signifie que pour le répertoire "/web/htdocs/prod" il n’y aura que l’option FollowSymLinks d’activée.
A l’inverse si on avait ajouté un +, cela signifie « ajouter à toutes les options déjà existantes, FollowSymLinks.
De même si on avait ajouté un -, cela signifie « supprimer des options (si elle est présente) » FollowSymLinks.
Ça n’est pas du tout la même chose et même si, une fois qu’on l’a en tête, c’est très simple, ça peut paraître déroutant au début.
Pour les quelques étudiants qui voudraient récupérer et lire le cours, un petit conseil sur les question qui vont vous être posées :
il vous faut connaitre les directives de réécriture les plus utilisées (redirection, etc) ;
il vous faut impérativement réussir à installer un ou plusieurs hôtes virtuels sur un ordinateur local et vous assurer que vous vous souvenez des étapes à faire ;
il vous faut savoir mettre en place une ou deux règle de réécriture afin de bien comprendre le fonctionnement. Vous allez avoir un ou deux exemples de règles à expliquer, et si vous n’avez jamais essayé d’en mettre une en place vous ne pourrez jamais les expliquer ;
enfin… avez vous bien en tête les 3 principes de sécurité ?
Bonne chance !
Et surtout n’hésitez pas à laisser un commentaire ou poser des questions ici.
Si vous avez des commentaires à faire sur mon cours, même chose : lâchez vous !
Votre fichier « php.ini » n’est pas chargé au démarrage d’Apache sous Windows Vista ?
Pas de problème. C’est très simple. Éditez votre fichier Apache de configuration, habituellement httpd.conf.
Juste avant la ligne de directive qui dit de charger le module Apache, il faut ajouter la directive PHPIniDir "C:/PHP" qui précise où doit se situer le fichier php.ini.
Je ne vous parle pas de l’autre méthode moins efficace : lancer Notepad en tant qu’administrateur, ouvrir le fichier php.ini puis le sauver sous le répertoire C:\Windows (c’est le répertoire de configuration par défaut de php).
Je viens de passer plus de deux heures complètes avant de réussir ce qui me prend en temps normal, sur Linux et Windows XP, 5 minutes. Décidément, Vista est vraiment de la daube sous tous les points de vue.