BastNic's blog

Switcher entre PHP 5.2 et PHP 5.3 sur Mac OS X et Homebrew

J'ai besoin au quotidien de pouvoir coder en PHP. Cela peut aller du tout nouveau framework de tests atoum, symfony 2… à du code pourri développé par d'autres et/ou du Drupal 6. Je n'ai donc pas trop le choix, il me faut PHP 5.2 sur ma machine.

Jusqu'à maintenant j'avais opté pour la facilité avec une installation complètement différente (vm, autre serveur) pour PHP5.3 et ça fonctionnait très bien. Mais c'était une situation stupide et bancale, genre un "proto en prod".

Les outils genre MAMP, Xampp étaient proscrits et j'ai une sainte horreur de MacPort et Fink. J'aime en revanche beaucoup homebrew. Malheureusement, PHP rentre en conflict avec la politique du créateur de ne pas surcharger les libs inclues dans Mac OS X, ce qui est le cas de PHP avec la version 5.3.2 (que je ne compte pas utiliser).

Pour avoir les deux et pouvoir switcher facilement, j'ai donc utilisé des forks git hébergés sur github :

  • PHP 5.2 depuis bozktek, qui vient juste de passer à la version 5.2.17 et qui propose une option de compilation FPM (que je n'utilise pas)
  • PHP 5.3 depuis ampt

Dans ces deux cas, je n'utilise pas exactement la version proposée, mais *oh joie* d'Homebrew et Git, modifier une Formula est très aisé et tout est sauvegardé / packagé / versionné avec git. Du bon combo gagnant !

La formula de PHP 5.2 proposé plus haut se nomme *php52* alors que celle de PHP 5.3 *php*. C'est gentil, ça évite les conflits.

Pour finir les installation ou plus de détails, je vous invite à lire le dernier billet de mon excellent collègue de Clever Age : Vincent Lemaire, Apache, mySQL et PHP 5.3 avec Homebrew. Ce qui nous intéresse ici c'est de pouvoir switcher entre l'un et l'autre.

Pour passer de PHP 5.2.17 à PHP 5.3.5

bash
# binaries files links
cd `brew --prefix` 
brew unlink php52
brew link php

# apache configuration
cd /tmp 
sudo cp /etc/apache2/httpd.conf /etc/apache2/httpd.conf.bak
sed -e "s/php\/5.3.5/php52\/5.2.17/g"  /etc/apache2/httpd.conf > httpd.conf.tmp
sudo mv httpd.conf.tmp /etc/apache2/httpd.conf
sudo apachectl restart

Pour passer de PHP 5.3.5 à PHP 5.2.17

# binaries files links
cd `brew --prefix` 
brew unlink php52
brew link php

# apache configuration
cd /tmp 
sudo cp /etc/apache2/httpd.conf /etc/apache2/httpd.conf.bak
sed -e "s/php52\/5.2.17/php\/5.3.5/g"  /etc/apache2/httpd.conf > httpd.conf.tmp
sudo mv httpd.conf.tmp /etc/apache2/httpd.conf
sudo apachectl restart

Puis

A vous de voir si vous allez plus loin : configuration php.ini, extension PHP. Mais le principe est là.

Je me suis intégré une version plus complexe de tout ça dans mon workflow de gestion de configuration de ma machine à base de git, fabric, lien logique pour en glander le moins possible, et c'est bien pratique et très élégant !

ps : chasse aux trolls, en python virtualenv c'est vachement plus intelligent ET JE LE SAIS !


Je serais au Forum PHP 2010, et vous ?

Cette année encore, l'AFUP rassemble pour son Forum PHP une palanquée de très grands du monde PHP, dont Rasmus Lerdorf, son créateur.

Il y aura tout un panel de conférences toutes plus intéressantes les unes que les autres pendant ces deux jours.

Avec un peu de (mal)chance, vous pourrez assister à celle dont je suis co-conférencier avec mon excellent collègue Xavier Lacot. Nous y traiterons de la place des frameworks dans l'écosystème PHP.

Au plaisir de vous y rencontrer !

Edit : les slides : http://xav.cc/frameworks


Drupal : revert d'une features qui utilise taxonomy_export

Un collègue et ami me demande :

mmmh en parlant de feature... comment ça ce passe quand c'est supplanté mais que le revert fonctionne pas j'ai ça sur Taxonomy export

Hmmm, élémentaire mon cher Watson, il suffit de regarder le code :

/**
 * Implementation of hook_features_export_revert()
 */
function taxonomy_export_features_export_revert($module = NULL) {
  return TRUE;
}

Ah oui ben bizarrement ça fait pas grand chose.

ps : je sais c'est bizarre de sortir ce blog de la torpeur pour ça, mais j'aime les trucs stupides.


Trop de code...

Je deviens à mon grand regret un simple spectateur de tout ce qui se publie sur Internet. Trop de projets symfony, drupal, de choses à tester (Jelix sur bitbucket, Symfony 2.0 sur github[1], Drupal 7, les NoSQL, toutes les APIs qui s'ouvrent de partout, etc), et malgré tout les journées ne font toujours que 24h.

On se revoit aux conférences ? (Paris Web, sfLive, RMLL (à Bordeaux \o/)

Notes

[1] Git vaincra


Un peu de culture [remasteurisée]

"The path of the righteous hacker is beset on all sides by the inequities of proprietary, and the tyranny of Microsoft. Blessed is he, who in the name of freedom and goodness, shepherds the n00b thru the valley of darkness, for he is truly his user's keeper and the finder of lost source code. And I will strike down upon thee with GPL and furious Affero GPL those who attempt to poison and destroy my projects with proprietary-licensed materials. And you will know my name is the GNU when I lay my vengeance upon thee."

Bruno Bord's non-talk at LRL 09


Cinq ans pour ça...

J'ai oublié que tout le monde ici ne lit pas mon twitter, mais :

Etudes FINIES !!!!!!!

De plus, je suis maintenant consultant chez Clever Age à Paris.

Pour l'un comme pour l'autre.... qui l'aurait crû ?


Stupide stagiaire, les tests c'est pas pour les chèvres !

Je lance les tests sur l'appli développé par mon petit minou préféré, Il travaille sur du Symfony.

Après 1500 tests tous fonctionnels, j'obtiens un :

Symfony goat !

Merci Patrick :p. (c'est toi the goat)


Mémo pour l'installation de pear dans Xampp 1.0.1

Il y a très longtemps j'utilisais MAMP que j'avais ensuite lâché pour xampp qui est maintenant mon installation par défaut. Pour être franc, je me rappelle vraiment plus pourquoi effectué ce changement...

Le include_path PHP de l'installation de xampp est faux de A à Z, alors que le dossier d'installation par défaut se nomme /Applications/XAMPP, la valeur de include_path vaut :

 include_path=".:/Applications/xampp/xamppfiles/lib/php"

De plus pear est installé dans /Applications/XAMPP/xamppfiles/lib/php/pear, donc non inclus dans le path php.

Corriger dont l'instruction include_path par :

 include_path=".:/Applications/XAMPP/xamppfiles/lib/php:/Applications/XAMPP/xamppfiles/lib/php/pear"

Je retourne à mon code. ++

ps : pour installer xdebug j'utilise la méthode trouvée sur ce blog qui utilise une build standalone générée pour l'IDE Komodo.


Traduction française de elgg 1.5

On m'avait signalé que la traduction française du projet et des modules elgg 1.5 était très moyenne. Comme j'en avais besoin rapidement j'ai mis mon chef bien aimé et mon esclave personnel sur le coup et hop les modules principaux (dont j'ai besoin) sont traduits (presque) à 100%.

Il manque encore le module forms mais je m'en moque car les utilisateurs finaux n'en auront jamais conscience de celui-là.

Sinon pour le fait, je n'ai pas le temps de faire une revue complète du projet, mais ça m'a quand même l'air moins bien foutu que Drupal.

A vos forks : http://github.com/bastnic/elgg-fr/tree/master

git clone git://github.com/bastnic/elgg-fr.git

Compte twitter suspendu

... sans raison et sans même un mail d'avertissement et/ou d'explications. Je viens de faire une demande pour voir ce qu'il en est.

Me semble pas avoir abusé pourtant :p.

EDIT : résolu 2mn après ma demande. Rapide mais bizarre


- page 1 de 65