Config apache2 + php5 spécifique

Bonjour,

Je dois installer une debian avec une config php5 bien spécifique :

-	PHP Version 5.0.4 avec les modules suivant :
o	Bcmath
o	BZip2 Version  1.0.2
o	calendar
o	ctype
o	libcurl/7.13.1 OpenSSL/0.9.7f zlib/1.2.2.2 libidn/0.5.15
o	dio
o	DOM/XML API Version  20031129  
o	EXIF Version  1.4 $Id: exif.c,v 1.162.2.8 2005/03/17 17:20:35 iliaa Exp $  
o	FTP support  enabled  
o	GD Support : 2.1.9
o	GetText Support
o	iconv library version  2.3.6  
o	IMAP c-Client Version  2001  
o	LDAP Support : 20029
o	libXML Version  2.6.20  
o	Multibyte regex (oniguruma) version  3.7.0  
o	mime_magic support enabled
o	Client API MYSQL version  4.1.20  
o	ODBC
o	OpenSSL 0.9.7f 22 Mar 2005
o	PCRE Library Version  5.0 13-Sep-2004  
o	PDF Support  enabled  
o	PDFlib GmbH Binary-Version  7.0.0p3  $Revision: 1.5 $
o	posix
o	Revision  $Revision: 1.60.2.2 $  
o	PSpell Support  enabled  
o	Session Support  enabled  
o	shmop support  enabled  
o	Simplexml Revision: 1.139.2.4 $  
o	Soap Client  enabled  
o	Soap Server  enabled  
o	Sockets Support  enabled  
o	SPL support enabled
o	SQLite Library  2.8.14  
o	Regex Library  Bundled library enabled  
o	Dynamic Library Support  enabled  
o	sysvmsg support  Revision: 1.16.2.3 $  
o	Tokenizer Support  enabled  
o	WDDX Session Serializer  enabled  
o	libxml2 Version  2.6.20  
o	core library version  xmlrpc-epi v. 0.51  
o	libxslt Version  1.1.14  
o	libxslt compiled against libxml Version  2.6.19  
o	YP Support  enabled  
o	ZLib Support  Compiled Version  1.2.2.2

Certains modules ne sont pas dispo en apt-get, nottament dio et pdflib.

Est-ce qu’il y a une solution pour ajouter les modules manquants ou bien je n’ai pas d’autre choix que de tout compiler?

help!!! :smt119

Si tu veux ajouter des modules qui ne sont pas inclus dans les sources php, tu n’as pas d’autre choix que de recompiler en ayant au préalable poser les modules en question dans le répertoires ext des sources php.
Si tu veux ajouter des modules déjà inclus dans les sources, mais non enabled, de même. Mais il y a peu de module mis à disable lors de la compile des sources debian de php (voir ./configure). Toutefois, si tu veux un truc bien spécifique, ya de forte chance qu’il te manque quelquechose.

Pour libpdf, ya peut-être mieux :
http://www.fpdf.org/ et php-fpdf.
dio c’est quoi ?

Dio est une extension qui donne des fonctions i/o directes : cf http://fr.php.net/dio ne me demande pas pourquoi j’en ai besoin, je n’en sais rien… je répond à une demande.

Pff galère la compilation : j’ai une erreur dont je ne trouve quasi aucune trace sur notre ami google.

L’erreur, lors du ./configure :

configure: error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen. Check config.log for additional information.

ma liste d’arguments :

 ./configure --with-gd --with-sqlite --with-pspell --with-zlib --with-openssl --with-gettext --with-ldap=shared --enable-ftp --enable-dio --enable-memory-limit --enable-calendar --with-dom-xslt=/usr --with-mysql=shared,/usr --with-pgsql=shared --with-snmp=shared --with-unixODBC=shared --with-xml --enable-exif --with-dom=/usr --enable-bcmath --enable-ctype --with-pcre-regex --with-mime-magic --with-pdflib=/usr/lib/pdflib7/bind/c --enable-posix --enable-session --enable-shmop --enable-simplexml --enable-soap --enable-spl --enable-sysvmsg --enable-tokenizer --enable-wddx --enable-libxml --with-xmlrpc --enable-yp --with-pdflib=/usr/local/PDFlib-7.0.1p1-Linux-php/bind/c --with-imap=shared

Je cherche, je cherche, mais je ne trouve pas… une idée?

ben de ce que j’ai lu, dio est passé dans le module pecl:
php.benscom.com/manual/fr/ref.dio.php
pecl.php.net/
et pour installer un de ces modules sous debian, il semble de ce que j’ai lu que tu peux les trouver sur dotdeb:
fr3.php.net/manual/fr/install.unix.debian.php
maintenant, sous quel nom…

quand au libpdf, il me semble aussi que tu peux les trouver en depots ici:
www-id.imag.fr/Laboratoire/Membr … t/deb.html

si tu dois vraiment compiler, j’ai cru voir que l’erreur venait de l’absence de libc-client-dev (il y en a plusieurs versions me semble t il), mais sur le site de dio, ils doivent te donner les dependances de compil nécessaires, non ?

Tout d’abord merci beaucoup pour tes réponses.
J’ai encore quelques questions :

Est-ce que l’utilisation de FPDF au lieu de PDFLib change quelque chose au niveau du code php (librairie différente) ?

C’est quoi exactement PECL? un module à installer? quelque chose comme PEAR?

Comment activer dio sans compiler?

En fait, je découvre avec toi ce que je te dis, je me permets juste de t’aider à réflechir, mais je n’y connais pas grand chose au delà du théorique :laughing:
Alors pour la differences entre deux libs, c’est certain que les api entre les deux modules sont different.
Pour ce qui est de PECL, oui, c’est lié à pear, et on explique ici comment fabriquer soi même ses modules sous forme de paquets debian:
wiki.splitbrain.org/phpdebian
dans les liens que je t’ai donnés au dessus, celui pour libpdf est correct, on trouve bien le paquet en binaire, mais pour ce qui est de dio, je n’en ai vu finalement aucune trace dans dotdeb
Par contre, maintenant que tu as les sources, tu n’es pas obligé de passer par pear pour les redl, et passer direct à l’étape dh-make-pecl en reprenant les sources que tu as. Le wrapper devrait t’installer de lui même ce qu’il faut pour te faire un joli paquet deb ?

De qulles sources parles-tu? Des sources php que j’essaie de compiler? je ne trouve pas de lien pour dio.

By the way aucune trace de php5-yp pour debian, il n’existe qu’en rpm. J’imagine qu’il y a une bonne raison mais bon je ne suis pas super compétant en linux.

bah les sources de dio que tu as téléchargées et dont le configure ne passe pas, j’imagine qu’elles sont en tar.gz ?
Dans ce cas, tu enlèves ce que tu as déployé, et tu fais comme il est dit dans le tuto:

#apt-get install dh-make-php php4-pear php4-dev php5-dev fakeroot $ dh-make-pecl dio.tar.gz $ cd dio $ dpkg-buildpackage -rfakeroot
Tu devrais obtenir qqpart (au dessus de là ou tu es sans doutes) un .deb que tu peux installer avec dpkg -i dio.deb (genre).

Et quand tu n’as pas les sources sous la main comme par exemple php5-yp, tu les télécharges d’abord avec :

ou peut être

Le tout devrait marcher avec tous les modules qui te manquent.
Je ne peux pas tester ici malheureusement.

malheureusement les sourecs ne sont pas dispo, que ce soit sur pear ou pecl…

J’ai essayé de transformer des rpm en .deb, avec alien (alien php5-ypxxx.rpm -d), le dpkg semble bien se passer, mais je n’ai aucune trace dans phpinfo().

Je ne sais plus quoi faire…

Bonjour,
attention, j’ai pas tout lu, mais quelque précision concernant pecl ou autre:

  • tu parles de trace d’erreur que tu ne trouves pas, mais tu regardes bien dans le config.log dans les sources php où tu as lancé le ./configure ?

  • pecl, ça fait partie effectivement de pear. Mais dans ton cas, c’est php5-pear, qu’il faut, pas php4-pear.
    Une fois ajouté les dépôts dans /etc/apt/sources.list, les commandes sont trés simple, pear install paquet, pecl install paquet (quand le paquet est un projet pecl), ou bien pear download etc …

  • quand on fait une compile de source, il faut pour bon nombre de paquet utilisé leur pendant paquet-dev, ainsi, pour compiler les sources php5, il faut obligatoirement php5-dev.
    De même, pour compiler une librairie incluse dans les sources de php, il faut la librairie-dev également, par exemple.

non non, faut pas que tu touches des rpm, c’est trop de la bidouille ça …
je m’aperçoit que j’utilise toujours les dépôt sarge de pear, parce que au passage à lenny, ils n’avaient pas suivi en créant un directory etch. Je crois même qu’ils ont renommé stable en sarge, vu que etch devenait stable. Ils devaient avoir des raisons de ne fournir que sarge, à voir.

deb http://packages.dotdeb.org sarge all deb-src http://packages.dotdeb.org sarge all

Mais les dépots ne sont pas les mêmes pour pear/pecl et apt non?

Est-ce que quelqu’un sait où je peut trouver yp et dio?

En parallèle,
mon config.log (une des erreurs):

configure:46103: checking for IMAP support
configure:46149: checking for IMAP Kerberos support
configure:46174: checking for IMAP SSL support
configure:46590: checking for utf8_mime2text signature
configure:46608: gcc -c -I/usr/local/include  conftest.c 1>&5
In file included from configure:46597:
/usr/local/include/stdio.h:21:3: error: #error "Never include <bits/stdio.h> directly; use <stdio.h> instead."
In file included from /usr/include/bits/waitstatus.h:65,
                 from /usr/local/include/stdlib.h:43,
                 from /usr/local/include/osdep.h:31,
                 from /usr/local/include/c-client.h:42,
                 from configure:46598:
/usr/local/include/endian.h:4:3: error: #error "Never use <bits/endian.h> directly; include <endian.h> instead."
In file included from /usr/local/include/stdlib.h:43,
                 from /usr/local/include/osdep.h:31,
                 from /usr/local/include/c-client.h:42,
                 from configure:46598:

/usr/include/bits/waitstatus.h:80: error: duplicate member '__w_retcode'
/usr/include/bits/waitstatus.h:80: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:80: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:81: error: duplicate member '__w_coredump'
/usr/include/bits/waitstatus.h:81: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:81: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:81: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:82: error: duplicate member '__w_termsig'
/usr/include/bits/waitstatus.h:82: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:82: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:82: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:82: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:94: error: duplicate member '__w_stopsig'
/usr/include/bits/waitstatus.h:94: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:94: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:95: error: duplicate member '__w_stopval'
/usr/include/bits/waitstatus.h:95: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:95: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:95: error: duplicate member '({anonymous})'
In file included from /usr/local/include/osdep.h:31,
                 from /usr/local/include/c-client.h:42,
                 from configure:46598:
/usr/local/include/stdlib.h:140: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__ctype_get_mb_cur_max'
In file included from /usr/include/sys/types.h:213,
                 from /usr/local/include/stdlib.h:433,
                 from /usr/local/include/osdep.h:31,
                 from /usr/local/include/c-client.h:42,
                 from configure:46598:

Ce qui est bizarre, c’est que je n’ai aucune trace d’un --enable-yp ou dio (ou --with …) dans mes sources de php5.
dio et yp n’ont rien à voir peut-etre avec pear et pecl, d’autre part, puisqu’un pear info dio ou yp ne me renvoie rien, mais la commande info n’est pas aussi puissante que search de apt (ici il faut le nom exact du paquet).

Est-ce que c’est librairies ou extension ne serait pas fourni exclusivement dans un type de php ? je pense à php-cgi, ce qui n’est pas du tout la même chose que php. Pour vérifier il faudrait installer les source de php5-cgi et chercher dans le ./configure --help.
Tu as vu ce lien : http://aide.sivit.fr/index.php?2005/07/01/80-installation-php-5?
non je vois pas sinon.

tu as suivi les liens que j’ai donné ? Je pense qu’il te parleront plus qu’a moi. C’est en les suivant que j’ai glissé vers pecl/pear.

:blush: j’y vais de suite :arrow_right:

Okayy !
Bon ben pour dio c’est trés simple, il faut une version inférieure à 5.1 de php, comme tu utilises la 5.0.4, c’est bon, c’est plus simple, parce que avec un version récente de php, on serait largués.
Donc, tu compiles tes sources avec --enable-dio, premier point, c’est suffisant, tout est déjà dedans.
Ainsi, tu peux, dans un bloc de code php (dans une page), appeller les fonctions ‘dio’, ok ?

Pour yp, qui est en fait le support NIS ! on dit YP/NIS, il y a fort à parier que c’est pareil.

Donc tu vas bien paufiner tes options à passer à configure, ça demande un peu de temps, et voilou. Mais je te conseille de travailler dans debian/rules, c’est la que sont les options que ./configure va prendre quand on lance un :

  • dpkg-buildpackage -b
  • ou debian/rules binary
    Je te conseille l’une de ces deux méthodes, qui te construira les paquets de php5 que tu pourras installer ensuite via un dpkg -i les.deb classique.
    Donc avant, tu t’assures de pas t’emmêler les pinceaux avec des --with ou des --enable dio et yp, et tu compiles avec l’une des deux méthodes.

ps rappel: la modif des options de ./configure va se faire dans debian/rules, cherches la variables COMMON_CONFIG *, un truc comme ça, et rajoute les enable ou with. Ces options seront passées à tous les php5, même cgi et cli, qui vont aussi être compilés, sans doute. Attends toi à t’y reprendre en plusieurs fois.
Bon ça c’est pour dio et cli, maintenant pour tes autres spécificités, je ne sais pas, j’ai pas regardé, mais tu rencontres d’autres problèmes ?

* Normalement, si une option n’a pas sa place dans cette rubrique, elle est skipper sans message d’avertissement, donc c’est pas ça je pense qui ferait planter la compile, d’où le choix de common-config, comme ça au moins …

Hello,

Merci beaucoup de s’intéresser à mon cas.

Je galère pour trouver les ources de la 5.0.4, impossible!!

Si quelqu’un à un lien à me proposer verts les sources php 5.0.4, j’achète !!

regardes ici:
snapshot.debian.net/
c’est une archive de toutes les versions de tous les paquets debian avec aussi les sources, depuis 2005.
tu chopes le paquet source pour le 5.0.4 de la dernière version que tu trouves en archives, et tu suis la manip propre qu’usinagaz t’a donnée pour refabriquer un paquet configuré à ta sauce.

Merci :wink:

Finalement, j’ai réussi à compiler. Resteun dernier point : faire le lien avec apache. Je ne me suis pas trop foulé pour apache d’ailleur je l’ai installé en apt-get.

Il faut bien ajouter deux fichiers : php5.conf et php5.load non? Malheureusement aucune trace d’un php.so pour faire le lien dans php5.load…

Une idée ?