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

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

Wamp : Configurer le stockage de configuration de phpMyAdmin

Edit du 27/11/2014 : J'ai apporté quelques corrections à ce billet car dans la première version, je créais l'utilisateur pma avec des droits sur toutes les bases de données. Or, d'un point de vue "sécurité", il vaut mieux que l'utilisateur pma n'est de droits que sur la table phpmyadmin.

Au quotidien, j'utilise MySQL Workbench pour l'administration de mes bases MySQL. Cependant, il est toujours utile d'avoir phpMyAdmin sous la main pour certaines opérations.

Si comme moi vous avez installé WampServer, vous avez surement remarqué ce message indiquant que vos préférences ne peuvent être enregistrées tant que vous n'avez pas configuré le "stockage de configurations phpMyAdmin".

1. Pour ce faire, il faut tout d'abord créer la base de données qui permettra de sauvegarder vos paramètres. Importez le fichier create_tables.sql (par défaut : C:\wamp\apps\phpmyadmin4.1.14\examples\create_tables.sql - bien entendu, le chemin varie selon votre version de phpMyAdmin) via l'onglet "Importer".

2. Il faut ensuite créer un utilisateur pour la base créée. Dans la liste des bases de données, cliquez sur la base phpmyadmin. Rendez vous ensuite dans l'onglet "Privilèges" et cliquez sur "Ajouter un utilisateur" :

  • Nom d'utilisateur : pma
  • Client : Local : localhost
  • Mot de passe : généré

Vérifiez bien que la case Donner tous les privilèges sur la base de données "phpmyadmin" est cochée.

3. Enfin, modifiez le fichier de configuration (C:\wamp\apps\phpmyadmin4.1.14\config.inc.php) en y ajoutant :

/* User used to manipulate with storage */
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'votreMotDePasse';

/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['designer_coords'] = 'pma__designer_coords';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';

Et voilà, le tour est joué ! ^^

Vous pouvez désormais configurer phpMyAdmin à votre guise.