rss
twitter
  • Showcase
  • Carrières
  • Support
  • GitLab
  • Espace client
  • Contact

Symfony2 sous OS X.6.8 (Snow Leopard)

2

INDEX

Un environnement de travail au poil, AKA PHP-intl + PHP-CGI + MAMP2

Configurations applicables et requises

N’étant pas très motivé pour passer à Lion (X.7), j’ai du faire évoluer mon environnement de travail :
– Mac OS X.6.8
– Intel
– 64 bits
– MAMP 1.8

Les pré-requis de Symfony2 sont les suivants :

– OK Checking that PHP version is at least 5.3.2 (5.3.6 installed)
– OK Checking that the « date.timezone » setting is set
– OK Checking that app/cache/ directory is writable
– OK Checking that the app/logs/ directory is writable
– OK Checking that the json_encode() is available
– OK Checking that the SQLite3 or PDO_SQLite extension is available
– OK Checking that the session_start() is available
– OK Checking that the ctype_alpha() is available
– OK Checking that the APC version is at least 3.0.17
– OK Checking that the PHP-XML module is installed
– OK Checking that the libxml version is at least 2.6.21
– OK Checking that the token_get_all() function is available
– OK Checking that the mb_strlen() function is available
– OK Checking that the iconv() function is available
– OK Checking that the utf8_decode() is available
– OK Checking that the posix_isatty() is available
– OK Checking that the intl extension is available
– OK Checking that the intl ICU version is at least 4+
– OK Checking that a PHP accelerator is installed
– OK Checking that php.ini has short_open_tag set to off
– OK Checking that php.ini has magic_quotes_gpc set to off
– OK Checking that php.ini has register_globals set to off
– OK Checking that php.ini has session.auto_start set to off
– OK Checking that PDO is installed
– OK Checking that PDO has some drivers installed: sqlite, sqlite2, pgsql, mysql

img1

Problème #1 : l’extension intl

Il y a 99% de chances pour que l’extension intl vous pose problème. Elle n’est pas installée Symfony2 refusera de bootstrapper sans elle.

Solution compliquée qui prend 3h20 et qui ne marche pas

szemian a rédigé un tutoriel très complet sur son blog : Compiling intl extension for MAMP

Malheureusement chez moi ça ne marche pas, en fait pour être honnête ça a bousillé mon installation de PHP, 3 tests sur 82 ne passent plus au make :

=====================================================================
FAILED TEST SUMMARY
---------------------------------------------------------------------
Test ResourceBundle array access and count - existing/missing keys [tests/resourcebundle_arrayaccess.phpt]
Test ResourceBundle::get() and length() - existing/missing keys [tests/resourcebundle_individual.phpt]
Test ResourceBundle iterator [tests/resourcebundle_iterator.phpt]
=====================================================================

En prime j’ai eu droit à ce joli message lors de la recompilation, qui m’a gentiment rabaissé à mon état de n00b bêta-testeur :

You may have found a problem in PHP.
We would like to send this report automatically to the
PHP QA team, to give us a better understanding of how
the test cases are doing. If you don't want to send it
immediately, you can choose "s" to save the report to
a file that you can send us later.
Do you want to send this report now? [Yns]:

Solution de facilité : MAMP2 + Moodle4Mac

En parcourant les forums j’ai pris connaissance du package pour MAMP permettant d’utiliser Moodle : Moodle4Mac. Ce dernier inclut la librairie intl. Par contre, il requiert MAMP2…

Après passage à la caisse, MAMP2 installé, il a suffit d’installer Moodle4Mac. Et hourra, ça marche.

Problème réglé.

img2

Problème #2 : PHP-CLI

Symfony use et abuse des outils en ligne de commande. Il faut donc utiliser la version command-line (CLI) de PHP. Par défaut, OS X utilise la version de PHP livrée avec le système.

Comment connaître la version de PHP utilisée par la ligne de commande ?

Germain-:~ germain$ php -v
PHP 5.3.6 (cli) (built: Aug 8 2011 17:02:34)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator

Ça, c’est le résultat auquel vous devez arriver… par défaut c’est la 5.2 sans Zend et ni l’eAccelerator (qui sont gracefuly installés par MAMP).
Vous allez donc devoir setter le chemin du php.ini pour qu’il aille chercher celui de MAMP.

Comment savoir quel est le php.ini utilisé par PHP CLI ?

Germain-:~ germain$ php -i | grep 'Configuration File'
Configuration File (php.ini) Path => /Applications/MAMP/bin/php/php5.3.6/conf
Loaded Configuration File => /Applications/MAMP/bin/php/php5.3.6/conf/php.ini

Comment en changer ?

Germain-:~ germain$ cd /opt/local/etc/php5
Germain-:~ php5$ sudo cp /Library/Application\ Support/appsolute/MAMP\ PRO/conf/php.ini php.ini

Ne pas oublier de changer le Path :

Germain-:~ php5$ sudo nano .profile

Et y saisir:

export PATH=/Applications/MAMP/Library/bin/:/Applications/MAMP/bin/php/php5.3.6/bin/:/opt/local/bin:/opt/local/sbin:$PATH

Reloader votre environnement :

Germain-:~ php5$ cd
Germain-:~ germain$ . ./.profile

Et voilà, le PHP d’Apache et le PHP de la ligne de commande sont synchronisés, Symfony2 passe enfin tous les tests à la fois dans le navigateur et en CLI.

img3
img4

DATE 29 Sep 2011
by : Germain
Author / Auteur

Social Share / Partager

    2 Comments
    1. EP Factory 18 décembre 2012 at 15 h 21 min Répondre

      Bonjour,
      Je développe actuellement un site en symfony2 et j’ai été confronté à ce problème de php-intl. Après recherches, je suis tombé sur votre tutoriel. Je souhaiterai le compléter avec une autre solution qui fonctionne parfaitement pour moi, et est plus économique que d’acheter MAMP PRO. J’ai suivi un autre lien me permettant d’installer apache2/php5.3.8/mysql sans passer par MAMP : https://justinhileman.info/article/reinstalling-php-53-on-mac-os-x/
      Aucun problème lors de l’installation, simplement quelques recherches de configuration pour mysql et apache.
      Depuis, tout roule
      Pour infos :
      n’oubliez pas de modifier le fichier /.bash_profile ou /.bash_rc
      le serveur mysql se démarre grâce à la commande « mysql.server start »
      le serveur apache se démarre grâce à la commande « sudo apachectl start »
      au besoin, créez un fichier /etc/my.cnf pour augmenter la mémoire mysql
      En espérant que ça puisse en aider d’autres

    2. admin_i 18 décembre 2012 at 15 h 22 min Répondre

      Merci pour votre contribution !
      Germain

    Leave a Reply / Répondre Annuler la réponse

    *
    *

    More in Desktop : OS X

    • Autoriser le chargement de contenus mixtes non-https dans Chrome (Mac)
    • Quel php.ini (MAMP ou Linux), quelle valeur de phpinfo() ?
    • Ouvrir un dossier (ex : Corbeille) depuis la ligne de commande
    • LaCie 2big NAS / 5big NAS : SSH + rsync
    • Git avec SourceTree : ouvrir dans TextMate / ouvrir dans Sublime Text 2

    Search the blog

    Blog categories

    • Front-end : HTML, CSS (13)
    • Workflow (1)
    • Front-end : javascript, jQuery (33)
    • Back-end : PHP, CMS (42)
    • Back-end : SQL, MySQL (20)
    • Sysadmin : Linux, Apache, GIT (75)
    • Designers : tools, advice (2)
    • Desktop : OS X (37)
    • Desktop : Microsoft (12)
    • Uncategorized (8)

    ITALIC™ Resources

    • Paramètres de connexion au serveur mail
    • Graphistes : séduire un développeur web
    • Dév front : nos bonnes pratiques
    • Mailing : nos (bonnes ?) pratiques
    • Environnement de travail Mac

    Recent posts

    • Autoriser le chargement de contenus mixtes non-https dans Chrome (Mac)
    • Afficher les logs MySQL
    • Recevoir un mail lors de la connexion root à un serveur
    • Changer l’interclassement de plusieurs tables MySQL à la fois (ou presque
    • Maildev : tester l’envoi de mails durant ses développements
    © 2008-2017 ITALIC™ • 8 bis rue Abel • 75012 PARIS • Tel +33 (0)1 48 44 46 35 • RCS PARIS 508 228 772 • Powered by WordPress & GoodLayers
    Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site web.
    Cookie settingsACCEPTER
    Manage consent

    Privacy Overview

    This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
    Necessary
    Toujours activé
    Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
    Non-necessary
    Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
    Enregistrer & appliquer