MAMP, PHP, Pear, PHP Code Sniffer sont dans un même bateau
Cela fait un moment que je n’avais pas écris de billet sur mon blog. Mais ça fait aussi longtemps que je me dis qu’il faut que j’écrive un tutoriel complet sur comment installer PHP Code Sniffer sur un MAMP.
En soit, vous pouvez retrouver toutes ces informations sur le net mais un peu éparpillées… Je dois "à chaque fois" jouer avec google pour retrouver ces différents articles.
De ce fait, je vais les regrouper sur une même page et, dans la mesure du possible, remettre les sources du code que je mettrai.
Besoins
En codant sous Mac OS X (Yosemite, là de suite), on utilise souvent MAMP pour développer nos différents sites en local. Et mine de rien, respecter les normes PHP, ça fait du bien. Et pour cela, on a besoin d’installer PHP Code Sniffer pour que nos IDEs puissent utiliser la norme PSR2 (dans mon cas).
Donc, ma configuration lors de ce pas à pas :
- Mac OSX 10.10.1 (dit Yosemite) ;
- MAMP 3.0.7.3 ;
- PHP 5.5.18 (fournit dans MAMP, et PHP 5.5.14 dans Yosemite).
Configuration de l’installation
Pour que nos lignes de commandes php et pear soient reconnues, il faut dire au système où regarder.
Pour cela, je vous invite à ouvrir le Terminal car c’est quasiment que par lui que nous allons utiliser pour configurer notre Mac.
PHP
Source : http://stackoverflow.com/a/17240373
A partir de là, je vous invite à taper la commande suivante :
# which php
Ce qui devrait vous donner ceci :
/usr/bin/php
Vérifions la version :
# php -v
Cela devrait vous dire que vous avez une version PHP 5.5.14. Ce qui ne correspond pas à notre version fournit avec MAMP. Nous devons alors dire à notre Mac qu’on veut la version de MAMP.
Taper ceci pour faire une sauvegarde de notre version de php en renommant le fichier php
en php.bak
. :
# sudo mv /usr/bin/php /usr/bin/php.bak
Notre Mac ne reconnaitra plus temporairement les commandes PHP. On crée maintenant un lien symbolique de php vers notre version de MAMP :
# sudo ln -s /Applications/MAMP/bin/php/php5.5.18/bin/php /usr/bin/php
Regarder votre version de PHP maintenant :
# php -v
On est ok normalement avec PHP
PEAR
Cette fois-ci, on va régler PEAR qui va nous permettre d’installer PHP Code Sniffer sur notre installation MAMP. Pour faire simple, on reprend la même démarche que précédemment.
# which pear
Là, si vous n’avez jamais configuré votre Mac, rien ne s’affichera. Vous serez redirigé vers la ligne de saisie de commandes. La commande suivante normalement nous donne le numéro de version de PEAR (attention à la majuscule du "V").
# pear -V
Mais comme dit précédemment, la commande PEAR n’est pas reconnue. On va dire alors à notre Mac qu’il faut qu’il aille voir dans MAMP :
# sudo ln -s /Applications/MAMP/bin/php/php5.5.18/bin/pear /usr/bin/pear
Refaites la commande de version de PEAR. MAMP fournit la version 1.9.5 pour PEAR.
On est ok normalement avec PEAR
PHP Code Sniffer
Source : : https://github.com/Islandora/islandora/wiki/Installing-and-configuring-codesniffer
Pour installer PHP Code Sniffer, il faut passer par PEAR. Comme on l’a déjà installé, il nous suffit de renseigner la commande suivante :
# pear install PHP_CodeSniffer
Je n’ai pas rencontré de problème à ce stade. Si on va dans /Applications/MAMP/bin/php/php5.5.18/bin/
on peut voir un fichier phpcs
. Mais dans /usr/bin/
, on ne trouve pas de phpcs
. Ce qui a pour effet, là de suite, que si on tape une commande phpcs
, on aura une erreur. Pour régler ça, rien de miraculeux, une ligne de commande mettra notre Mac dans le droit chemin :
# sudo ln -s /Applications/MAMP/bin/php/php5.5.18/bin/phpcs /usr/bin/phpcs
On vérifie tout ça :
# phpcs --version
Soit pour moi : PHP_CodeSniffer version 2.2.0 (stable) by Squiz (http://www.squiz.net)
PHP Mess Detector
Source : http://pear.phpmd.org/
On installe souvent avec PHPcs la librairie PHP Mess Detector (PHPmd). Pour cela, il faut ajouter un channel spécifique à PEAR.
# pear channel-discover pear.phpmd.org
On regarde les packages disponibles :
# pear remote-list -c phpmd
Soit :
Channel phpmd Available packages:
=================================
Package Version
PHP_PMD 1.5.0
La ligne de commande suivante va poser problème :
# pear install phpmd/PHP_PMD
# Unknown remote channel: pear.pdepend.org
# phpmd/PHP_PMD requires package "channel://pear.pdepend.org/PHP_Depend" (version >= 1.1.1)
# No valid packages found
# install failed
Il faut rajouter le channel pear.pdepend.org
:
# pear channel-discover pear.pdepend.org
Et maintenant, on fait ceci :
# pear install --alldeps phpmd/PHP_PMD
L’option --alldeps
va installer toutes les dépendances nécessaires pour PHPmd avant d’installer PHPmd.
Ok, on crée les liens symboliques pour notre Mac :
# sudo ln -s /Applications/MAMP/bin/php/php5.5.18/bin/phpmd /usr/bin/phpmd
# sudo ln -s /Applications/MAMP/bin/php/php5.5.18/bin/pdepend /usr/bin/pdepend
Petit test :
# phpmd --version
# pdepend --version
Et voilà ! C’est fini ! Vous pouvez vous amuser maintenant !
Bonus : PHPUnit
Pour PHPcs, on n’a pas besoin de PHPUnit… Qu’on se le dise. Mais, je me dis que cela peut servir à certains. Alors voici la méthode.
Comme on peut le lire sur https://github.com/sebastianbergman..., on ne passe plus par PEAR pour installer PHPUnit mais par un fichier phar.
Sur la doc, on passe par des lignes de commandes aussi pour faire tout cela… Ok… Mais il y a un problème. Sur le Mac, la commande wget
ne fonctionnera pas. On va passer par la commande curl
pour récupérer le fichier.
D’abord, on va sur le bureau (par exemple)
# cd ~/Desktop/
Et là, on va pouvoir travailler ainsi :
# curl -o phpunit.phar https://phar.phpunit.de/phpunit.phar
# chmod +x phpunit.phar
# sudo mv phpunit.phar /usr/bin/phpunit
Ça vous dit de vérifier ? Simple, même astuce que tout à l’heure :
# phpunit --version
# PHPUnit 4.4.5 by Sebastian Bergmann.
Et voilà ! J’en ai fini avec ce pas à pas. ;-)
Derniers commentaires
# Le 25 septembre à 12:01, par Teddy Payet
En réponse à : Un Nouveau Chapitre : Mon Admission dans un MBA en Intelligence Artificielle et Data Innovation
# Le 25 septembre à 11:20, par vY
En réponse à : Un Nouveau Chapitre : Mon Admission dans un MBA en Intelligence Artificielle et Data Innovation
# Le 21 juin à 13:49, par Teddy Payet
En réponse à : Home Assistant : Routine le matin avant l’école
# Le 21 juin à 10:47, par Teddy Payet
En réponse à : Ma domotique open source
# Le 16 juin à 17:15, par Eric
En réponse à : Ma domotique open source
# Le 7 mars à 09:43, par Jacques Pyrat
En réponse à : Un Nouveau Chapitre : Mon Admission dans un MBA en Intelligence Artificielle et Data Innovation