Problèmes de compilation
Cette section couvre les erreurs les plus communes pouvant se produire lors de la compilation de PHP.
- J'ai téléchargé la dernière version des sources de PHP en utilisant Git, mais il n'y a pas de script configure !
- J'ai des problèmes pour configurer PHP avec Apache. On m'indique que httpd.h n'est pas trouvé, mais il est bien là ou je l'ai spécifié !
- Pendant la configuration de PHP (./configure), vous rencontrez une erreur semblable à celle-ci : checking lex output file root... ./configure: lex: command not found configure: error: cannot find output from lex; giving up
- Quand je lance Apache, j'obtiens le message suivant : fatal: relocation error: file /path/to/libphp4.so: symbol ap_block_alarms: referenced symbol not found
- Quand je lance le ./configure, on me dit que les fichiers d'en-tête de GD, gdbm, ... ne sont pas trouvés !
- Quand le fichier language-parser.tab.c est compilé, j'obtiens un message yytname undeclared.
- Quand je lance make, tout semble bien se passer, mais ça échoue quand il essaie de lier l'application finale, en prétendant qu'il manque des fichiers.
- Au moment de lier PHP, il y a des références indéfinies.
- Je ne vois pas comment compiler PHP avec Apache 1.3.
- J'ai suivi toutes les étapes pour installer le module Apache sous Unix, mais malgré tout, mes scripts PHP s'affichent en clair dans mon navigateur ou celui-ci me demande de sauver le fichier.
- Il est dit d'utiliser --activate-module=src/modules/php4/libphp4.a, mais ce fichier n'existe pas, alors je l'ai changé pour --activate-module=src/modules/php4/libmodphp4.a et ça ne fonctionne pas. Qu'est ce qui se passe ?
- Quand j'essaie de compiler Apache avec PHP en module statique en utilisant --activate-module=src/modules/php4/libphp4.a on me répond que mon compilateur n'est pas conforme aux normes ANSI.
- Quand j'esaie de compiler PHP avec --with-apxs, j'obtiens des messages d'erreur étranges.
- Pendant le make, j'ai des erreurs concernant microtime et beaucoup de RUSAGE_.
- Quand je compile PHP avec le support MySQL, le configure se passe bien, mais pendant le make, j'obtiens une erreur de ce style : ext/mysql/ libmysqlclient /my_tempnam.o(.text+0x46): In function my_tempnam': /php4/ext/mysql/ libmysqlclient /my_tempnam.c:103: the use of tempnam' is dangerous, better use mkstemp', qu'est ce qui ne va pas ?
- Je veux mettre à jour mon PHP. Où puis-je trouver la ligne ./configure qui a été utilisée pour mon installation actuelle de PHP?
- Quand je compile PHP avec le support de la bibliothèque GD, j'obtiens des erreurs de compilation étrange, voire même des erreurs de segmentation.
- Quand je compile PHP, j'obtiens des erreurs aléatoires, voire même tout s'arrête. J'utilise Solaris.
- J'ai téléchargé la dernière version des sources de PHP en utilisant Git, mais il n'y a pas de script configure !
-
Vous devez avoir le logiciel GNU autoconf d'installé pour générer le script configure à partir de configure.in. Lancez juste ./buildconf à la racine du répertoire des sources après avoir récupéré celles-ci à partir du serveur Git. (De plus, à moins que vous ne lanciez configure avec l'option --enable-maintainer-mode, le script configure ne sera pas automatiquement reconstruit si configure.in est mis à jour, vous obligeant à le faire à la main quand vous remarquez que configure.in est mis à jour. Une conséquence de ceci est que l'on trouve des choses telles que @VARIABLE@ dans votre Makefile après que configure ou config.status soit lancé.)
- J'ai des problèmes pour configurer PHP avec Apache. On m'indique que httpd.h n'est pas trouvé, mais il est bien là ou je l'ai spécifié !
-
Vous devez spécifier au script de configuration (configure) l'emplacement du répertoire ou sont les sources de Apache. Cela signifie que vous devez spécifier --with-apache=/chemin/vers/apache et pas --with-apache=/chemin/vers/apache/src .
-
Pendant la configuration de PHP (./configure), vous
rencontrez une erreur semblable à celle-ci :
checking lex output file root... ./configure: lex: command not found
configure: error: cannot find output from lex; giving up
-
Assurez-vous de bien avoir lu les instructions d'installation et d'avoir flex et bison d'installés pour compiler PHP. Selon votre système, vous devrez installer bison et flex à partir de sources ou bien de paquets, tel qu'un RPM.
- Quand je lance le ./configure, on me dit que les fichiers d'en-tête de GD, gdbm, ... ne sont pas trouvés !
-
Vous pouvez forcer le script configure à chercher les fichiers d'en-tête à des endroits non-standard en passant des options supplémentaires au préprocesseur C et à l'éditeur de liens, par exemple :
Au début du résultat affiché figure la ligne ./configure qui fût utilisée lors de la configuration de votre PHP actuel.<?php phpinfo(); ?>
- Quand je compile PHP avec le support de la bibliothèque GD, j'obtiens des erreurs de compilation étrange, voire même des erreurs de segmentation.
-
Assurez-vous que votre bibliothèque GD et PHP sont liés aux mêmes bibliothèques (libpng, par exemple).
- Quand je compile PHP, j'obtiens des erreurs aléatoires, voire même tout s'arrête. J'utilise Solaris.
-
L'utilisation d'utilitaires non-GNU pour compiler PHP peut poser problème. Assurez-vous de bien utiliser des outils GNU pour être certain que votre compilation arrive à terme. Par exemple, sous Solaris, utiliser les version SunOS BSD-compatible ou Solaris de sed ne fonctionnera pas, mais utiliser les versions GNU ou Sun POSIX (xpg4) de sed fonctionnera. Liens : » GNU sed, » GNU flex et » GNU bison.