Journal PHP quand tu nous tient....

Posté par  .
Étiquettes :
0
20
avr.
2004
Bon alors voila... Je suis un peu nouveau sous GNU/Linux, mais vaillant je décide de me lancer dans l'install d'un serveur chez moi pour faire partage de connexion internet, firewall et tout ce qui va avec. Et dans ce qui va avec j'aimerai faire marcher un serveur apache avec php et mysql. Jusque là, rien de bien anormal, personne ne devrait avoir chopé de syncope, ni même se demander si je viens pas de Mars...

Donc voila, je récupère mes sources de apache 2.0.49 (la derniere version), de php 4.3.6 (la derniere version) et d'apres le tuto (en fait y'en a deux : http://www.ze-linux.org/howto.html?id_docs=7&id_docs_page=31(...) et http://www.neokraft.net/docs/apache2/chap2.html(...) ) que je suis, pour mysql on verra apres...

Alors me voila armé des archives des sources, prêt à en découdre sévère. Je me lance donc tout d'abord dans l'install de apache. Tout se passe bien, ./configure && make && make install. Nikel. Sur cette bonne lancée, je me lance dans l'install de php, confiant... Mais j'aurais pas dû... (être confiant s'entend !!). Je me fabrique donc ma "petite" ligne de configuration de php :

./configure --enable-calendar --with-mysql --with-apxs2=/usr/local/httpd/bin/apxs --with-config-file-path=/usr/local/httpd/conf --enable-trans-sid --enable-sigchild --with-dom --with-zlib-dir=/usr/include/linux/ --with-dom-xslt --with-dom-exslt

Oui je veux utiliser XML, et DOM, et XSLT... Oui. Et alors ? Y'a plein de gens qui le font alors pourquoi pas moi hein ? J'avais commencé mon site avec tout ça alors maintenant je veux pas recommencer !!!

Donc après quelques ruses de sioux (ou de gruiiiiik) pour lui faire trouver les include pour la libxml2 et la libxsl, je me lance dans le "make". Ou plutot le make de la mort qui tue. Parce que voila l'erreur que je me prends :

/bin/sh /tmp/apache/php-4.3.6/libtool --silent --preserve-dup-deps --mode=compile gcc -I/tmp/apache/php-4.3.6/ext/mysql/libmysql -Iext/mysql/ -I/tmp/apache/php-4.3.6/ext/mysql/ -DPHP_ATOM_INC -I/tmp/apache/php-4.3.6/include -I/tmp/apache/php-4.3.6/main -I/tmp/apache/php-4.3.6 -I/tmp/apache/php-4.3.6/Zend -I/tmp/apache/php-4.3.6/ext/xml/expat -I/tmp/apache/php-4.3.6/TSRM -g -O2 -prefer-pic -c /tmp/apache/php-4.3.6/ext/mysql/libmysql/libmysql.c -o ext/mysql/libmysql/libmysql.lo
In file included from /tmp/apache/php-4.3.6/ext/mysql/libmysql/libmysql.c:4:
/tmp/apache/php-4.3.6/ext/mysql/libmysql/global.h:260: warning: redefinition of `uint'
/usr/include/sys/types.h:153: warning: `uint' previously declared here
/tmp/apache/php-4.3.6/ext/mysql/libmysql/global.h:261: warning: redefinition of `ushort'
/usr/include/sys/types.h:152: warning: `ushort' previously declared here
In file included from /tmp/apache/php-4.3.6/ext/mysql/libmysql/libmysql.c:11:
/tmp/apache/php-4.3.6/ext/mysql/libmysql/m_string.h:183: error: parse error before "__extension__"
/tmp/apache/php-4.3.6/ext/mysql/libmysql/m_string.h:183: error: parse error before '&&' token
make: *** [ext/mysql/libmysql/libmysql.lo] Error 1


j'ai fait expres de copier la ligne de compilation avec


Impossible de trouver d'où ça vient... Alors je me dis que chez moi php-4.3.6 passe pas (après deux heures de tentavives de compilation vous êtes prêt à croire à tout !!!) (PS qui s'impose : je suis sous Debian 3.0 woody passée en testing). Alors je m'empresse de recupérer php-4.3.5 et zou, on y repart avec le configure et le make... de la mort qui tue.. Et oui, la même erreur.. Alors là c'est est trop... Je repart directement à php-4.3.0 pour voir (sans y croire), et paf !!! La même...

Alors voilà ma question : quelqu'un peut-il m'aider à résoudre ce problème ??? Bien évidement, lorsque je précise --without-mysql au configure, tout se passe nikel lors du make...

Merci de vos réponses, ça fait deux jours que je tente de compiler ce php de m**** en vain, et là j'ai les nerfs qui vont lâcher !!!!
  • # Re: PHP quand tu nous tient....

    Posté par  . Évalué à 2.

    Question con : pourquoi ne pas installer les paquets de ta distribution ?

    Sous Debian un simple :
    $ apt-get -u install apache mysql php4 php4-mysql phpmyadmin

    et tu as tout ce qu'il te faut installer et configuré en moins de quelques minutes, prêt à fonctionner niquel... Bon ok, c'est apache1.3 et pas apache 2, mais de toute façon apache2+php = mauvaise pioche en général. Sachant que sur un serveur perso et pour faire du dév, apache1.3 est largement suffisant (et surtout que tout marche niquel).

    Mais c'est vrai, j'oubli l'adage : pourquoi faire simple qd on peut faire compliqué ? ^_^
    • [^] # Re: PHP quand tu nous tient....

      Posté par  (site web personnel) . Évalué à 1.

      mais de toute façon apache2+php = mauvaise pioche en général
      Je les utilise depuis plusieurs années sans problème (sur Mandrake), tu peux préciser ?
      • [^] # Re: PHP quand tu nous tient....

        Posté par  (site web personnel) . Évalué à 1.

        PHP ne fonctionne pas totalement avec apache 2 et la php team recommande d'utiliser apache 1.3
        • [^] # Re: PHP quand tu nous tient....

          Posté par  . Évalué à 1.

          Oui, je confirme, j'ai installé apache 2 il y a quelque jours pour profiter au maximum de subversion, et j'en ai profité pour tester mon site avec... évidement, mon site est fait en xml/xslt/mysql, et les fonctions domxml n'ont pas l'air de fonctionner sous apache2... j'obtient des belles erreurs du genre : "domxml_new_doc" fonction inconnue... alors que le phpinfo affiché depuis apache 2 m'indique bien que domxml est installé.
          Merci d'etre passé... au suivant.
        • [^] # Re: PHP quand tu nous tient....

          Posté par  (site web personnel) . Évalué à 1.

          Arrêtons les légendes urbaines s'il vous plait.

          Ce qui ne marche potentiellement pas c'est le mode multithread d'Apache2 (parce que PHP ne cherche pas forcément à être thread safe, les extensions encore moins). Si tu utilises le module prefork d'Apache2 (ce qui est le cas par défaut sous linux) tu as exactement le même comportement qu'Apache1.3.
          Le truc c'est que si c'est pour mimer le comportement d'Apache 1.3 autant utiliser Apache 1.3 qui est bien plus testé a a encore bien plus de modules : c'est uniquement pour ça que la php team déconseille le 2.0.
    • [^] # Re: PHP quand tu nous tient....

      Posté par  . Évalué à 1.

      Le truc c'est que si je fais cette méthode (apt-get install...), suis-je sûr d'avoir les extensions domxml et touticouanti ?
      • [^] # Re: PHP quand tu nous tient....

        Posté par  . Évalué à 1.

        Je pense que oui
        J'utilise pas Debian mais sous mandrake y'a des RPMS qui contiennent chaque extension...
  • # Re: PHP quand tu nous tient....

    Posté par  . Évalué à 1.

    T'as essayé en installant MySQL avant PHP ?

    Ca peut paraitre bête, mais il me semble que ton erreur de compilation pour ajouter le support MySQL à PHP est due au fait que MySQL n'est pas installé... Il cherche des bibliothèques qu'il ne trouve pas.
    • [^] # Re: PHP quand tu nous tient....

      Posté par  . Évalué à 1.

      Si il faisait des erreurs à cause du fait qu'il trouve pas mysql, pourquoi le configure passe-t-il ? Il devrait (je trouve ca logique) me faire un erreur à ce moment en me disant qu'il a pas trouvé mysql sur mon système non ?
      • [^] # Re: PHP quand tu nous tient....

        Posté par  . Évalué à 1.

        Ca, c'est la logique. Après, la pratique, c'est différent : prends kdemultimedia-3.2.0 qui ne fait pas d'erreur au configure mais plantera s'il n'a pas les bonnes options et qu'il n'existe pas lame (encodage mp3) par exemple.
    • [^] # Re: PHP quand tu nous tient....

      Posté par  (site web personnel) . Évalué à 1.

      Le tarball de php contient normalement la lib client en interne, il n'y a pas besoin d'en avoir une sur le système. Logiquement il suffit de retirer le "--with-mysql" du configure pour lui laisser utiliser la sienne (mysql est compilé par défaut)
  • # Re: PHP quand tu nous tient....

    Posté par  (site web personnel) . Évalué à 1.

    si tu fais ./configure sans options ça dit quoi ?

    as tu pensé à faire un "make clean" et recommencer le configure depuis le début ?

    php utilise une lib interne par défaut pour mysql, essaie de ne pas spécifier le "--with-mysql" (mais ne met pas le --without-mysql non plus), ça devrait utiliser la lib embarquée et fonctionner.
    • [^] # Re: PHP quand tu nous tient....

      Posté par  . Évalué à 1.

      J'ai testé mais c'est en compilat sa lib internet qu'il plante, que je mette le --with-mysql ou non... C'est pour ça que je bloque !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.