Ma logithèque pour développer en PHP sous Windows

Suite à la lecture du billet de Nicolas Hachet intitulé "Quels outils pour développer en PHP sous Windows ?", j'ai eu envie de faire, moi aussi, le tour de mon environnement de développement.

 

Stack

WampServer

Je vous l'accorde, rien de bien original. À mes débuts, j'installais Apache, MySQL et PHP l'un après l'autre mais je trouvais ça fastidieux. Surtout qu'à cette époque (début des années 2000), il m'arrivait bien souvent de réinstaller Windows. Par la suite, j'ai découvert EasyPhp que j'ai utilisé pendant un certain temps. Je ne me souviens plus de la raison qui m'a poussé à tester WampServer à l'époque mais en tout cas, je ne suis jamais revenu en arrière. Apache, MySQL et PHP installés et prêts à l'emploi en moins de 10 minutes, que demander de plus ? Simple et efficace.

 

Programmation

Cmder

Je vous l'avais déjà présenté en mars 2015. Elle reste ma Console de prédiléction bien que j'ai tendance à utiliser de plus en plus celle intégrée à Visual Studio Code.

 

Visual Studio Code

Visual Studio Code est mon nouvel IDE de coeur. Après des années sur Netbeans, j'ai enfin trouvé un IDE puissant et eye-candy. Netbeans est puissant lui aussi, mais je me suis lassé de son interface old-school ! Cerise sur le gâteau, Visual Studio Code est beaucoup moins gourmand en ressources que Netbeans.

 

Notepad2

Beaucoup utilise Notepad++ pour l'édition rapide de script. Personnellement, j'ai choisi Notepad2 qui est, certes vieillissant et non maintenu depuis 2012, mais qui n'en reste pas moins une solution hyper légère. En plus, il est "livré" avec TortoiseGit alors pourquoi s'en priver. J'ai bien essayé de passer à Notepad++, mais je le trouve beaucoup trop "lourd" pour de l'édition simple et rapide.

 

TortoiseGIT

Je suis un grand fan du système de gestion de versions Git. TortoiseGit permet (entre autre) d'afficher l'état d'un fichier par superposition d'icône dans l'explorateur de fichier de Windows et y ajoute également un menu contextuel pour Git. Bref, un must-have pour les utilisateurs de Git.

 

Base de données

MySQL Workbench

Pendant de nombreuses années, je me suis contenté de PHPMyAdmin. Je le trouvais cependant trop peu ergonomique et trop peu pratique. MySQL Workbench me semble plus adapté et permet de faire énormément de chose, de la simple requête au reverse engineering d'une base de données. Bref, l'essayer c'est l'adopter.

 

SQL Server Management Studio

Rapide raccourci qui risque d'en faire hurler plus d'un ^^ : SQL Server Management Studio est le MySQL Workbench pour SQL Server.

 

Accès distants

Windows Connexion Bureau à distance

Pour le coup, j'utilise l'application native de Windows pour la prise en main à distance de Windows Server. Elle fait le job donc...

 

Filezilla

Inutile d'entrer dans les détails, je pense que tout le monde connaît l'indétrônable client FTP ? Je utilise FileZilla depuis toujours.

 

Navigation et test

Edge, Firefox, Chrome

Edge en première position ? Non, ce n'est pas une erreur. Pendant de longues années, je n'utilisais que Firefox pour la navigation et le développement. A la sortie de Windows 10, j'ai commencé à utiliser Edge sporadiquement car je le trouvais plus rapide et plus eye-candy. Petit à petit, Edge est devenu mon navigateur par défaut. Je continue cependant à utiliser Firefox en navigateur secondaire. Quant à Chrome, je ne l'utilise qu'à des fins de test. En effet, je n'ai jamais aimé ce navigateur. Les goûts et les couleurs... De temps en temps, j'utilise également Vivaldi mais c'est relativement rare.

 

Bureautique et organisation

Microsoft Office 2013

Ne nous leurrons pas : Microsoft Office reste LA référence en matière de suite bureautique. Si dans un cadre privé je recommande chaudement LibreOffice, j'avoue que dans un cadre professionnel, je ne pourrais pas me passer de la suite de Microsoft.

 

OneNote

OneNote est la pierre angulaire de mon organisation. Il m'est réellement indispensable. J'utilise énormément cet outil pour prendre des notes pendant mes développements. Synchronisé automatiquement sur tous mes postes, je retrouve mes notes sur tous mes appareils. Il me permet de structurer mes idées. C'est un outil que j'utilise également à titre personnel. D'ailleurs, la plupart des billets que vous lirez sur ce blog sont initialement rédigés dans OneNote. C'est d'ailleurs mon principal frein à un retour sur GNU/Linux...

 

Redmine

Redmine est un bug-tracker complet et relativement user-friendly. J'en avais tester quelques autres avant d'opter pour cet outil mais je ne les trouvais pas très accessibles aux utilisateurs non informaticiens. Après quelques années d'utilisation, je ne peux que vous recommander chaudement cet outil.

 

Conclusion

Ces différents outils sont ce que je pourrais appeler "mes indispensables". D'ailleurs, si je compare ma logithèque actuel à celle que je vous présentais en octobre 2015, je constate que mise à part mon passage de Netbeans à Visual Studio Code, j'utilise toujours les mêmes outils. :)

Symfony 3 : Installation et création d'un projet

Comme annoncé dans un billet précédent, j'ai décidé de me lancer dans l'apprentissage de Symfony.

Jusqu'à présent, j'ai toujours développé mes applications web from scratch, tout en utilisant de multiples packages grâce à composer. C'est donc tout naturellement que l'idée de passer à Symfony a fait son chemin.

L'installation de ce framework est d'une simplicité enfantine. :) Il vous suffit de suivre la documentation disponible sur le site de Symfony. Bien entendu, il vous faudra un environnement Apache, Php, Mysql fonctionnel. Pour ma part, j'utilise Wampserver 2.5... oui, je sais, il faut que je mette tout ça à jour ^^.

Pour résumer, il vous suffit de taper :

c:\wamp\www\php -r "readfile('https://symfony.com/installer');" > symfony

Puis :

c:\wamp\www\php symfony new votre_projet

 

Si tout se passe bien, le tour est joué. :)

 

Alors pourquoi en faire un billet me direz-vous ? Et bien tout simplement car j'ai tout de même un peu lutté pour résoudre le problème dont la solution est pourtant bien en évidence sur la documentation d'installation :

[GuzzleHttp\Exception\RequestException]
  cURL error 60: SSL certificate problem: unable to get local issuer certificate

 

Symfony erreur cURL

 

Dans ce cas-là, il suffit de télécharger le fichier https://curl.haxx.se/ca/cacert.pem et de mettre à jour le fichier php.ini en remplaçant la ligne :

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
;curl.cainfo =

 

Par :

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo = "C:\wamp\bin\php\cacert.pem"

N.B. :  Bien entendu, le chemin indiqué variera selon la localisation de votre fichier cacert.pem

 

J'ai donc suivi cette procédure mais malheureusement, cette erreur me sautait toujours au visage. En fait, pour modifier le fichier php.ini, je passais par le raccourcis présent dans la barre des tâches :

Wampserver barre des taches

Or, en procédant de la sorte, ce n'est pas le bon php.ini que je mettais à jour.

Il faut modifier le php.ini directement dans le dossier C:\wamp\bin\php\php5.6.16\ (la version de php peut varier selon la version de wampserver que vous utilisez).

Et le tour est joué. :)

 

Symfony nouveau projet

php5.6 sur WampServer 2.5

Edit du 16/06/2017 : Cette procédure fonctionne également avec php7.1.6 sur WampServer 3.0.6 ^^

 

Cette semaine, au boulot, nous sommes passés à php5.6.16 sur notre serveur de production. Pour développer efficacement, il m’a donc fallu upgrader mon environnement de développement.

Ça tombe bien, WampServer 2.5 (Wamp, pour les intimes) permet d’installer plusieurs versions de php côte à côte et de switcher de l’une à l’autre aisément. Il faut malgré tout respecter la procédure d’installation des nouvelles (ou anciennes) versions de php que l’on souhaite ajouter.

Je vous propose donc de découvrir comment installer php5.6.16 aux côtés de la version 5.5.12 fourni de base avec Wamp.

Si ce n’est déjà fait, téléchargez WampServer 2.5 (http://www.wampserver.com/) puis procédez à son installation.
Personnellement, j’installe toujours Wamp dans le dossier proposé par défaut : c:/wamp. Si vous n’avez pas fait ce choix, pensez à adapter le chemin tout au long du tuto.

Lire la suite de php5.6 sur WampServer 2.5

Maildev : interceptez, testez et visualisez les emails envoyés par votre serveur de dev

Si vous développez un site ou une appli web, vous êtes forcément confronté, à un moment ou à un autre, à devoir tester ou vérifier les emails de notification qui en émanent. Pour ce faire, il existe un superbe outil qui intercepte tous les emails envoyés depuis votre serveur de développement.

 

Qu'est ce que MailDev ?

MailDev est un serveur SMTP couplé à une interface Web (franchement jolie qui plus est) qui intercepte les emails émanant de votre serveur Web afin de les visualiser et les tester. Les emails interceptés n'étant pas délivrés, vous n'aurez plus à modifier les adresses de destinataires lors de vos tests. :)

MailDev dispose de nombreuses fonctionnalités vraiment très pratique. Vous en trouverez le détail sur le site de l'éditeur : http://djfarrelly.github.io/MailDev/.

Personnellement, les fonctionnalités que j'apprécie particulièrement sont :

  • simplicité de mise en place de l'outil
  • interface web claire et épurée
  • dès qu'un email est intercepté, un indicateur apparaît dans l'onglet (cf. fin du billet)
  • visualisation du header complet des emails en un clic
  • possibilité de tester la "responsivité" des emails
  • passage de la version HTML à Plain Text d'un clic

 

Bon, c'est bien beau tout ça, mais comment ça s'installe ?

L'installation de cet outil est d'une facilité déconcertante.

Commencez tout d'abord par installer Node.js si ce n'est déjà fait.

Ouvrez ensuite votre console (Cmder) et installez MailDev via la commande suivante :

npm install -g maildev

 

Le script d'installation m'a signalé des erreurs pendant son processus. Malgré cela, l'outil fonctionne parfaitement. Donc, si vous constatez des erreurs lors de l'installation, pas de panique. J'avoue que je n'ai pas vraiment pris le temps de creuser le pourquoi du comment de ces erreurs.

Une fois installé, ne reste plus qu'à le lancer :

MailDev

 

Vous pouvez maintenant vous connecter à son interface web : localhost:1080

Interface Web de MailDev

C'est joli, non ? ^^

Maintenant que MailDev est installé et fonctionnel, il va falloir indiquer à votre appli (via votre framework) ou à votre serveur Web (via le fichier php.ini) l'adresse du serveur SMTP de MailDev.

Personnellement, j'ai modifié le php.ini de mon serveur de développement (WAMP) :

[mail function]
SMTP = localhost
smtp_port = 1025

 

Voilà, désormais, chaque email qui partira de votre localhost sera intercepté par MailDev :

Notification MailDev

 

Et le tour est joué !

 

Source : http://www.grafikart.fr/tutoriels/divers/maildev-tester-emails-595

Lancer un script PHP en ligne de commande sous Windows

Comme je le disais dans mes deux derniers billets, je travaille actuellement sur des scripts de migration de données. Le problème avec ce genre de scripts qui traitent plusieurs milliers de lignes, c'est que vous êtes vite bloqué par les délais d'exécution lorsque vous les lancez via un navigateur Web.

Vous avez alors deux possibilités :

  • Fractionner le traitement des données en fixant des plages de traitement (traitement par lots)
  • Lancer votre script directement sur le serveur en ligne de commande

Fractionner le traitement est souvent fastidieux, surtout lorsqu'on doit traiter plus de 80 000 lignes.

La solution la plus simple est donc de lancer votre script directement dans une console (Invite de commandes). Pour ce faire, ouvrez une console et rendez vous dans le répertoire contenant le fichier php.exe. Si vous utilisez WampServer, le chemin par défaut est :

C:\wamp\bin\php\php5.5.12>

N.B. : la version de PHP varie selon votre version de wamp

Pour lancer votre script, il vous suffit d'exécuter la commande suivante :

C:\wamp\bin\php\php5.5.12>php.exe -f c:\chemin\vers\votre\script.php

Et le tour est joué ! ^^

Si vous exécutez souvent des commandes PHP en ligne de commandes, vous pouvez également déclarer le chemin de votre php.exe dans vos variables d'environnement du système. Cela vous évitera de devoir vous positionner dans le répertoire de php avant de lancer vos scripts. Pour plus d'informations, n'hésitez pas à consulter la documentation PHP sur php.net : Ligne de commande PHP sous Microsoft Windows