Компиляция PHP с поддержкой GD и libjpeg - PullRequest
18 голосов
/ 24 августа 2011

Я компилирую свой собственный PHP, частично чтобы узнать больше о том, как PHP составлен, и частично потому, что я всегда нахожу, что мне нужны модули, которые по умолчанию недоступны, и таким образом я могу контролировать это.

Моя проблема в том, что я не могу получить поддержку JPEG в PHP. Использование CentOS 5.6. Вот мои параметры конфигурации при компиляции 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/'

Вывод ./configure говорит:

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

И затем мы видим, что GD установлен, но поддержки JPEG нет:

# 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] =>
)

Я знаю, что PHP должен быть в состоянии найти libjpeg, и он, очевидно, не может найти версию, которой он доволен. Я бы подумал, что /usr/lib/libjpeg.so или /usr/lib/libjpeg.so.62 будет то, что ему нужно, но я снабдил его правильным каталогом lib (--with-jpeg-dir=/usr/lib/), и он не подхватывает их, поэтому я думаю, что они не могут быть правильными версиями .

rpm говорит, что libjpeg установлен. Должен ли я yum remove и переустановить его, и все его зависимые пакеты? Может ли это решить проблему?

Вот корзина для пасты с набором, надеюсь, полезной системной информации:
http://pastebin.com/ied0kPR6

Извинения за перекрестную публикацию с ошибкой сервера (https://serverfault.com/q/304310/92291), хотя я пытался выяснить, какова была позиция Stack Exchange в перекрестной публикации, и не было ясно: https://meta.stackexchange.com/q/75326/167958

Ответы [ 3 ]

15 голосов
/ 14 сентября 2011

по запросу:

Иногда сценарий конфигурирования тупой, и вы должны сделать --with-somelib = / usr вместо ... = / usr / lib, потому что тест конфигурации пишется как обеспечитьpath + '/ lib /', а не только что предоставил путь внутренне. Возможно, вам придется покопаться в тестовом наборе конфигурации, чтобы узнать, что действительно требуется

14 голосов
/ 16 февраля 2013

Не забудьте выполнить

make clean

после настройки.

Мне нужно выполнить некоторые другие настройки и выполнить до и старую установкуне позволяйте мне включить поддержку jpeg на GD.

Это спасает меня на Ubuntu 12.04 64bit

Я также использую эти пакеты:

aptitude install libjpeg62-dev libpng-dev libfreetype6-dev

с этой конфигурациейпараметры:

./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

, а затем:

make clean
make
make install

Хорошо работать с Apache 2.4.3 и PHP 5.4.11

2 голосов
/ 24 августа 2011

Скорее всего, вам нужно установить версию libjpeg, а не версию для выполнения (конечно, после компиляции вам понадобится версия для выполнения).

Сам я не пользуюсь CentOS, но что-то вроде этого должно помочь:

rpm install libjpeg-devel

Возможно, у меня неправильное имя пакета, но поищите что-нибудь с постфиксом -dev или -devel.

...