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
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é.
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.
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
Merci pour votre contribution !
Germain