web-dev-qa-db-fra.com

Compilation PHP avec support Gd et libjpeg

Je compile mon propre PHP, en partie pour en savoir plus sur la façon dont PHP est mis en place, et en partie parce que je trouve toujours que j'ai besoin de modules qui ne sont pas disponibles par défaut, et de cette façon j'ai contrôle sur cela.

Mon problème est que je ne peux pas obtenir le support JPEG en PHP. Utilisation de CentOS 5.6. Voici mes options de configuration lors de la compilation PHP 5.3.8 :

 './configure'  '--enable-fpm' '--enable-mbstring' '--with-mysql' '--with-mysqli' '--with-Gd' '--with-curl' '--with-mcrypt' '--with-zlib' '--with-pear' '--with-gmp' '--with-xsl' '--enable-Zip' '--disable-fileinfo' '--with-jpeg-dir=/usr/lib/'

Le ./configure la sortie indique:

checking for Gd support... yes
checking for the location of libjpeg... no
checking for the location of libpng... no
checking for the location of libXpm... no

Et puis nous pouvons voir que Gd est installé, mais que le support JPEG n'est pas là:

# php -r 'print_r(Gd_info());'
Array
(
    [Gd Version] => bundled (2.0.34 compatible)
    [FreeType Support] =>
    [T1Lib Support] =>
    [GIF Read Support] => 1
    [GIF Create Support] => 1
    [JPEG Support] =>
    [PNG Support] => 1
    [WBMP Support] => 1
    [XPM Support] =>
    [XBM Support] => 1
    [JIS-mapped Japanese Font Support] =>
)

Je sais que PHP doit pouvoir trouver libjpeg, et il ne peut évidemment pas trouver de version qui lui convient. J'aurais pensé que /usr/lib/libjpeg.so ou /usr/lib/libjpeg.so.62 serait ce dont il a besoin, mais je l'ai fourni avec le bon répertoire lib (--with-jpeg-dir=/usr/lib/) et il ne les ramasse pas, donc je suppose qu'ils ne peuvent pas être les bonnes versions.

rpm indique que libjpeg est installé. Devrais-je yum remove et le réinstaller, et tous ses packages dépendants? Cela pourrait-il résoudre le problème?

Voici un bac à pâte avec une collection d'informations système, espérons-le, utiles:
http://Pastebin.com/ied0kPR6

Excuses pour la publication croisée avec Server Fault ( https://serverfault.com/q/304310/92291 ) bien que j'aie essayé de découvrir quelle était la position de Stack Exchange sur la publication croisée et ce n'était pas clair : https://meta.stackexchange.com/q/75326/167958

19
Robin Winslow

comme demandé:

Parfois, le script de configuration est stupide, et vous devez faire - avec-somelib =/usr au lieu de ... =/usr/lib, car le test de configuration est écrit comme fourni chemin + '/ lib /' plutôt que simplement fourni chemin en interne . Vous devrez peut-être fouiller dans la suite de tests de configuration pour découvrir ce qui est vraiment nécessaire

16
Marc B

N'oubliez pas de faire un

make clean

après avoir configuré.

J'ai fait une autre configuration et fais avant et l'ancienne installation m'empêche d'avoir le support jpeg activé sur Gd.

Cela me sauve sur ubuntu 12.04 64bits

J'ai également utilisé ces packages:

aptitude install libjpeg62-dev libpng-dev libfreetype6-dev

avec ces options de configuration:

./configure \
  --with-config-file-path=/usr/local/Apache2/conf \
  --with-jpeg-dir \
  --with-png-dir \
  --with-vpx-dir \
  --with-freetype-dir \
  --enable-apc \
  --enable-bcmath \
  --enable-calendar \
  --enable-dba \
  --enable-exif \
  --enable-ftp \
  --enable-mbstring \
  --enable-shmop \
  --enable-sigchild \
  --enable-soap \
  --enable-sockets \
  --enable-sysvmsg \
  --enable-Zip \
  --enable-Gd-native-ttf  \
  --with-Gd \
  --with-apxs2=/usr/local/httpd/bin/apxs \
  --with-bz2 \
  --with-curl \
  --with-gettext \
  --with-mcrypt \
  --with-mysql-sock=/var/run/mysqld/mysqld.sock \
  --with-openssl \
  --with-pdo-mysql \
  --with-xmlrpc \
  --with-zlib

puis :

make clean
make
make install

Fonctionne bien avec Apache 2.4.3 et PHP 5.4.11

14
Stanislas Nichini

Vous aurez très probablement besoin d'installer la version de développement, et non la version d'exécution, de libjpeg (bien sûr, la version d'exécution sera nécessaire une fois que vous aurez compilé).

Je n'utilise pas CentOS moi-même, mais quelque chose comme ça devrait aider:

rpm install libjpeg-devel

Le nom du package est peut-être incorrect, mais recherchez quelque chose avec un -dev ou -devel suffixe.

2
Bojangles