Tags

Related Posts

Share This

Mise à jour de la version de PHP sur Mountain Lion

Depuis quelques temps déjà je n’utilise plus MAMP sur mac os X pour mes développements web.

J’utilise désormais le Apache intégré « nativement » à Lion Mountain (présent également dans les versions antérieures de Mac OS X).

Voici les étapes à suivre pour installer la dernière version de PHP (5.4.9 lors de la rédaction de cet article)

  1. Si vous souhaitez conserver votre ancienne version de php commencer par faire une copie du fichier /usr/libexec/apache2/libphp5.so
  2. Télécharger et installer Xcode depuis l’apple store.
  3. Une fois que l’application est installée l’ouvrir pour installer les composants complémentaires  « Command Line Tools » depuis les préférences de Xcode.
  4. Télécharger et décompresser l’archive des sources de la dernière version de PHP
  5. Installer XQuartz (si vous ne l’avez pas déjà fait)
  6. Installer Imap2007(nous souhaitons pouvoir disposer des fonctionnalités IMAP)
    cd /MON/REPERTOIRE/TEMPORAIRE
    wget ftp://ftp.cac.washington.edu/imap/imap-2007f.tar.gz
    tar zxvf imap-2007f.tar.gz
    cd imap-2007f
    make osx EXTRACFLAGS="-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp"
    sudo cp c-client/*.h /usr/local/include/
    sudo cp c-client/*.c /usr/local/lib
    sudo cp c-client/c-client.a /usr/local/lib/libc-client.a
  7. Installer les librairies des dépendances en utilisant HomeBrew
    brew install libjpeg
    brew install libpng
    brew install mcrypt
    brew install libxml2
    brew install openssl
    brew install icu4c
    brew install gd
    brew install pcre
    brew install wget
    ATTENTION il faut penser à créer le lien symbolique pour le fichier de config de ICU avec la commande ci-dessous, sinon vous risquez d’obtenir un échèque de compilation avec le message configure: error: Unable to detect ICU prefix or /usr/local/bin/icu-config failed. Please verify ICU install prefix and make sure icu-c
    ln -s /usr/local/Cellar/icu4c/<VERSION-ICU>/bin/icu-config /usr/local/bin/icu-config

    VERSION-ICU est à remplacé par le numéro de version installé par la commande brew install icu4c pour connaitre cette version il suffit d’exécuter la commande

    ls -l /usr/local/Cellar/i*
  8. Ouvrir un terminal (Applications/Utilitaires) et depuis le dossier contenant les sources de PHP exécuter la commande
    ./configure --prefix=/usr/local/php549 --mandir=/usr/share/man --infodir=/usr/share/info --sysconfdir=/private/etc --with-apxs2=/usr/sbin/apxs --enable-cli --with-config-file-path=/etc --with-libxml-dir=/usr --with-openssl=/usr --with-kerberos=/usr --with-zlib=/usr --enable-bcmath --with-bz2=/usr --enable-calendar --with-curl=/usr --enable-dba --enable-exif --enable-ftp --with-gd --enable-gd-native-ttf --with-icu-dir=/usr/local --with-iodbc=/usr --with-ldap=/usr --with-ldap-sasl=/usr --with-libedit=/usr --enable-mbstring --enable-mbregex --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql-sock=/tmp/mysql.sock --with-readline=/usr --enable-shmop --with-snmp=/usr --enable-soap --enable-pcntl --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-tidy --enable-wddx --with-xmlrpc --with-iconv-dir=/usr --with-xsl=/usr --enable-zip --with-imap=/usr/local/imap-2007 --with-kerberos --with-imap-ssl --enable-intl --with-pcre-regex --with-pgsql=/usr --with-pdo-pgsql=/usr --with-freetype-dir=/usr/X11 --with-jpeg-dir=/usr --with-png-dir=/usr/X11
    Vous devriez obtenir un message vous informant qu’aucune erreur n’é été rencontré du style
    Generating files
    configure: creating ./config.status
    creating main/internal_functions.c
    creating main/internal_functions_cli.c
    +--------------------------------------------------------------------+
    | License:                                                           |
    | This software is subject to the PHP License, available in this     |
    | distribution in the file LICENSE.  By continuing this installation |
    | process, you are bound by the terms of this license agreement.     |
    | If you do not agree with the terms of this license, you must abort |
    | the installation process at this point.                            |
    +--------------------------------------------------------------------+
    
    Thank you for using PHP.
    
    config.status: creating php5.spec
    config.status: creating main/build-defs.h
    config.status: creating scripts/phpize
    config.status: creating scripts/man1/phpize.1
    config.status: creating scripts/php-config
    config.status: creating scripts/man1/php-config.1
    config.status: creating sapi/cli/php.1
    config.status: creating main/php_config.h
    config.status: executing default commands
  9. Étape de compilation
    make
    ...............
    .......
    ..........
    Generating phar.php
    Generating phar.phar
    PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.
    clicommand.inc
    directorygraphiterator.inc
    directorytreeiterator.inc
    invertedregexiterator.inc
    pharcommand.inc
    phar.inc
    
    Build complete.
    Don't forget to run 'make test'.
  10.  Puis installation
    sudo make install
  11. Modifier la variable PATH en éditant le fichier /etc/paths pour faire en sorte que la ligne /usr/local/bin soit avant la ligne /usr/bin
  12. Enfin on peut redémarrer apache

Conclusion

Cette méthode requiert plus de temps que l’installation directement depuis BREW (projet homebrew-php) sur github mais elle offre l’avantage de pouvoir disposer d’une plus fine granularité au niveau des version de PHP et des mises à jour.

Remarques :

Il est possible de profiter en ligne commande de la même version de PHP que celle utilisée par Apache, il faut pour cela ajouter une ligne à votre fichier /etc/paths.
Par exemple pour ajouter la version 5.4.9 il faut ajouter dans notre cas /usr/local/php549/bin (en première ligne)
Si vous préférez less liens symboliques c’est également possible de mettre en place cette technique au lieu de modifier la variable $PATH

Il est également possible de changer la version utilisé par apache en modifiant la directive LoadModule php5_module du fichier de configuration (ie : httpd.conf)