Nous avons maintenant compilé et installé tous les programmes et librairies nécessaires à l'utilisation de Typo3. Mais il nous reste encore à recompiler PHP, pour que ces changements soient disponibles. En effet, Typo3 utilise la plupart de ces programmes via l'API PHP. Apple fournit avec son système une distribution basique de PHP. Nous allons donc en créer une autre, plus appropriée à nos besoins. Nous laisserons l'installation d'Apple en place, pour éviter des problèmes lors de mises à jour du système. Nous nous contenterons de la désactiver, et nous mettrons notre propre version à un autre endroit.
1. Télécharger la source
PHP peut être obtenu depuis http://www.php.net/downloads.php. Téléchargez le code source complet de la dernière version stable de PHP 4 (certainement PHP 4.3.8), décompressez le fichier, et allez dans ce répertoire en tant que root.
Bien que la toute dernière version du langage PHP (5.0.0) se compile sans aucun problème sur Mac OS X, nous n'allons pas l'utiliser. Cette version fonctionne également avec Typo3, mais il est encore trop tôt, à mon avis, pour l'installer. Nous n'avons en effet pas encore énormément de recul face à cette nouvelle version.
2. Compilation
Avant d'entreprendre la compilation, nous allons faire une sauvegarde de l'ancien module PHP. Pour cela, utilisez la commande suivante:
sudo mv /usr/libexec/httpd/libphp4.so /usr/libexec/httpd/libphp4.so.save
Pour correctement compiler PHP, nous ne pouvons pas utiliser uniquement ./configure, puisque nous allons utiliser des paramètres spéciaux. Voici donc la commande de configuration à utiliser:
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php --with-apxs --with-ldap=/usr --with-kerberos=/usr --enable-cli --with-zlib-dir=/usr --enable-trans-sid --with-xml --enable-exif --enable-ftp --enable-mbstring --enable-dbx --enable-sockets --with-iodbc=/usr --with-curl=/usr --with-tiff-dir=/usr/local --with-gd --with-png-dir=/usr/local --with-jpeg-dir=/usr/local --with-freetype-dir=/usr/local --enable-gd-native-ttf --enable-gd-imgstrttf
Il s'agit des même paramètre que pour la version d'Apple, mais avec le support de toutes les librairies que nous avons installées et un nouvel emplacement. Une fois la configuration terminée, vous devriez voir ceci:
+--------------------------------------------------------------------+
| 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. |
+--------------------------------------------------------------------+
| *** NOTE *** |
| The default for register_globals is now OFF! |
| |
| If your application relies on register_globals being ON, you |
| should explicitly set it to on in your php.ini file. |
| Note that you are strongly encouraged to read |
| http://www.php.net/manual/en/security.registerglobals.php |
| about the implications of having register_globals set to on, and |
| avoid using it if possible. |
+--------------------------------------------------------------------+
Thank you for using PHP.
Vous pouvez alors lancer make, et make install. Ces opérations vont prendre beaucoup de temps. Il vous faudra donc faire preuve de patience. Notre nouvelle version sera installée dans /usr/local/php/, et le module Apache dans /usr/libexec/httpd/.
La dernière étape est de copier le fichier de configuration de PHP, qui est fourni avec le code source. Pour cela, toujours en tant que root dans le répertoire source, tapez:
cp php.ini-* /usr/local/php/
Nous allons maintenant configurer notre installation. Nous avons copié deux fichiers dans le répertoire PHP: php.ini-dist et php.ini-recommended. Ces fichiers sont des exemples de configuration. Le premier contient une configuration basique, et le second, une configuration recommandée. Nous allons choisir, dans ce cas là, la version recommandée, et l'optimiser un peu pour Typo3. Commençons par la copier:
sudo cp /usr/local/php/php.ini-recommended /usr/local/php.ini
Ouvrez maintenant ce fichier dans un éditeur texte. A la ligne 89, vous verrez ceci:
short_open_tag = On
Il n'est pas nécessaire de mettre cette directive sous «Off», mais il est fortement recommandé de le faire. Cela affectera la façon de déclarer un script PHP. Si vous la désactivez, vous ne pourrez plus utiliser des balises courtes (<? ?>).
Ensuite, à la ligne 167:
allow_call_time_pass_reference = Off
Avec cette directive sous «Off», il est impossible de forcer une variable à être passée par référence lorsque vous appelez une fonction. Ce réglage est correct pour Typo3, et ne doit en aucun cas être changé.
Plus loin, à la ligne 208, une directive très importante:
;open_basedir =
Cette directive est commentée (avec le signe ;). Elle est donc inactive. Elle contrôle les endroits de votre disque auxquels PHP pourra accéder. Sans elle, PHP peut accéder à l'entier du disque. Il vaut donc mieux l'activer, et ajouter des chemins d'accès (chaque chemin étant séparé par le signe :), comme dans l'exemple ci-dessous:
open_basedir = /Library/Servers/:/usr/bin/:/usr/sbin/:/usr/local/bin/:/var/tmp/
Maintenant, à la ligne 240:
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
max_execution_time = 30 ; Maximum execution time of each script, in seconds
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
memory_limit = 8M ; Maximum amount of memory a script may consume (8MB)
Ces lignes contrôlent les ressources attribuées à PHP. Pour Typo3, nous allons devoir augmenter la limite de mémoire à au moins 16M. Vous devriez également augmenter le temps maximum d'exécution à 60.
Ensuite, à la ligne 285:
error_reporting = E_ALL
Cette ligne contrôle les erreurs PHP qui seront affichées. Vous devriez désactiver les avertissements:
error_reporting = E_ALL & ~E_NOTICE
De cette manière, vous ne serez pas averti lors d'une «erreur» de ce type, qui peut parfaitement être intentionnelle.
Vous devriez également activer l'affichage des erreurs PHP, afin d'être informé lorsque vous avez un bug dans un script. Cela se passe à la ligne 292, en écrivant «On» à la place de «Off»:
display_errors = Off
Toujours plus loin, à la ligne 369:
variables_order = "GPCS"
Cette directive est aussi importante. Les variables d'environnement ne seront pas définies dans le tableau $HTTP_ENV_VARS[], et ce pour des raisons de performance. Ce réglage est correct pour Typo3, et ne devrait jamais être modifié.
Ensuite, à la ligne 380:
register_globals = Off
Le réglage est également correct. N'utilisez jamais la fonctionnalité register_globals dans vos scripts PHP. Cela améliore à la fois la sécurité et les performances.
Même chose à la ligne 397:
register_argc_argv = Off
Et finallement, aux lignes 397 et 400:
magic_quotes_gpc = Off
magic_quotes_runtime = Off
Il est important pour Typo3 que ces deux directives soient sous «Off».
Vous pourriez également avoir envie d'augmenter la taille maximale des fichiers uploadés. C'est possible à la ligne 501:
upload_max_filesize = 2M
Votre nouvelle installation de PHP est maintenant configurée. Il ne reste plus qu'à redémarrer Apache pour que ces changements soient effectifs.
Vous pouvez obtenir le manuel complet et de la documentation supplémentaire sur PHP sur le site internet du groupe PHP (http://www.php.net/manual/).