MAMP, PHP, Pear, PHP Code Sniffer sont dans un même bateau

Langage et développement
PHP
Systèmes d’exploitation

| par Teddy Payet | 4

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. ;-)