Tous droits réservés

Notre environnement de développement

Afin d’avoir un environnement de développement de référence pendant ce cours, nous allons voir ensemble les technologies qui seront utilisées et surtout à quelles versions.

Vous pourrez ainsi tester les différents codes qui seront fournis. Il est utile de rappeler que pour suivre ce cours vous devez avoir un minimum de connaissances en PHP et Symfony. Certains aspects de configuration comme l’installation de MySQL, Apache ou autres ne seront pas abordés. Si vous n’avez jamais procédé à l’installation de Symfony, il est préférable de se documenter sur le sujet avant de commencer ce cours.

Environnement technique

Plateforme

Nous avons ci-dessous un tableau récapitulatif des différentes technologies et la version utilisée. Le système d’exploitation utilisé importe peu et vous pouvez donc utiliser celui de votre choix pour suivre le reste du cours. Sur Windows, vous avez la suite WAMP et son équivalent LAMP sur Ubuntu.

Technologie Version Exemples
PHP 7.0.x 7.0.0, 7.0.3
MySQL 5.7.x 5.7.0, 5.7.9
Apache 2.4.x 2.4.0, 2.4.17

Symfony Installer

La méthode recommandée pour installer un projet Symfony est d’utiliser l’installateur. Cet utilitaire nous permettra d’installer Symfony avec la version que nous souhaitons.

Installation sur Linux

Il suffit de lancer dans la console:

1
2
 curl -LsS https://symfony.com/installer -o ~/bin/symfony
 chmod a+x ~/bin/symfony

Cela téléchargera l’installateur et le placera dans le répertoire bin de l’utilisateur connecté.

Installation sous Windows:

Avant tout, il faut s’assurer que l’exécutable de PHP est bien disponible dans l’invite de commande. Des consignes d’installation sont disponibles sur le site officiel de PHP. Ensuite, Il suffit exécuter dans l’invite de commande :

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

Ensuite, il est judicieux de créer un fichier symfony.bat contenant @php "%~dp0symfony" %*.

Il est possible de placer les fichiers symfony et symfony.bat dans un même dossier que vous rajouter dans le PATH avec les variables d’environnement de Windows afin d’accéder à la commande partout.

Une fois l’installation finie, lancer la commande symfony pour vérifier le bon fonctionnement du tout.

1
2
3
4
5
6
7
symfony
# réponse attendue
 Symfony Installer (1.5.0)
 =========================

 This is the official installer to start new projects based on the
 Symfony full-stack framework.

Composer

Nous utiliserons Composer pour rajouter de nouvelles dépendances à notre projet.

Il suffit d’utiliser l’installateur disponible sur le site officiel.

Pour tester le bon fonctionnement, il faut lancer la commande composer:

1
2
3
4
5
6
7
8
composer
# réponse attendue
#   ______
#  / ____/___  ____ ___  ____  ____  ________  _____
# / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
#/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
#\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
#                    /_/             

Installation de Git

Si vous n’avez pas déjà Git sur votre machine, il va falloir l’installer car Composer peut être amené à l’utiliser pour télécharger des dépendances. L’installation est bien détaillée sur le site Git SCM. Il faudra juste vous assurer que l’exécutable git est disponible dans votre path.

Création d'un projet Symfony

Utilisons l’installateur de Symfony

Création du projet

Maintenant que nous avons un environnement de développement bien configuré, il ne reste plus qu’à créer un nouveau projet basé sur Symfony 3.

1
2
3
4
symfony new rest_api 3.1
# Réponse attendue
Preparing project...
OK  Symfony 3.1.1 was successfully installed.

Après un long moment de chargement, nous avons un dossier nommé rest_api contenant une installation toute neuve de Symfony 3.1.X (3.1.1 pour mon cas). Ça sera notre point de départ pour nos développements. Testons la création du projet en lançant le serveur de développement intégré à PHP:

1
2
3
4
5
cd rest_api
php bin/console server:run

[OK] Server running on http://127.0.0.1:8000
// Quit the server with CONTROL-C.

Accédez à l’URL de vérification de Symfony et effectuez les correctifs si nécessaires http://localhost:8000/config.php.

Page de vérification de la configuration de Symfony

Problème de certificats SSL

Sous Windows, il est possible de rencontrer des problèmes de certificats.

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

Pour corriger ce problème, il faut s’assurer que l’extension OpenSSL est activée et définir le chemin d’accès vers le fichier contenant les certificats racines.

Une liste de certificats est disponible sur https://curl.haxx.se/ca/cacert.pem. Pensez à le télécharger.

Commençons par identifier le fichier de configuration de PHP. Avec WAMP, ce fichier se situe dans le dossier d’installation (par exemple, D:\wamp64\bin\php\php7.0.0\php.ini). Il suffit maintenant de vérifier que la ligne concernant l’extension OpenSSL n’est pas commenté et de spécifier le chemin du fichier contenant les certificats racines.

1
2
3
4
extension=php_openssl.dll
[openssl]
openssl.cafile=D:\wamp64\bin\php\php7.0.0\cacert.pem
;openssl.capath=

Configuration de Apache

Durant le reste du cours, j’accéderai à l’API en utilisant un virtual host apache personnalisé. Notre API sera donc disponible sur l’URL http://rest-api.local.

Pour ce faire, il faut configurer un virtual host apache et modifier le fichier host du système pour renseigner l’URL rest-api.local.

Le virtual host fourni est compatible avec Windows. Penser à remplacer D:/wamp64/www/rest_api par votre dossier d’installation et à effectuer les adaptations nécessaires pour un autre système d’exploitation.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<VirtualHost *:80>
    ServerName rest-api.local

    DocumentRoot "D:/wamp64/www/rest_api/web"

    <Directory "D:/wamp64/www/rest_api/web">
      DirectoryIndex app_dev.php
      Require all granted
      AllowOverride None

      RewriteEngine On
      RewriteCond %{REQUEST_FILENAME} -f
      RewriteRule ^ - [L]
      RewriteRule ^ app_dev.php [L]
    </Directory>

    # Ajuster le chemin vers les fichiers de logs à votre convenance
    ErrorLog logs/rest-api-error.log 
    CustomLog logs/rest-api-access.log combined
</VirtualHost>

Le mode rewrite d’apache est obligatoire pour que ce virtual host fonctionne. Notez aussi que les requêtes seront redirigées directement vers app_dev.php avec cette configuration.

Ensuite sous Windows, éditez en tant qu’administrateur le fichier C:\Windows\System32\drivers\etc\hosts et sous Linux, éditez avec les droits root le fichier /etc/hosts, et rajouter une ligne: ``` 127.0.0.1 rest-api.local

Maintenant en accédant à l’URL http://rest-api.local/, nous atteignons notre page web de bienvenue.

Page d’accueil de notre futur site

Maintenant que nous avons un environnement de développement fonctionnel, nous allons mettre en place toutes les briques nécessaires pour avoir une API REST complète. Les choses sérieuses peuvent maintenant commencer. L’outil Postman sera utilisé pour effectuer tous les tests de notre API. Il est donc grandement recommandé de l’installer avant de continuer.