我编译自己的PHP,部分是为了更多地了解PHP如何组合在一起,部分是因为我总是发现我需要默认情况下不可用的模块,这样我就可以控制它。
我的问题是我无法在PHP中获得JPEG支持。使用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
答案 0 :(得分:15)
按要求:
有时配置脚本很笨,你必须做--with-somelib = / usr而不是... = / usr / lib,因为配置测试写的是提供路径+'/ lib /'而不是只是在内部提供路径。您可能需要在配置测试套件中挖掘以找出真正需要的内容
答案 1 :(得分:14)
别忘了做
make clean
。
我已经做了一些其他配置并且之前做过,旧安装阻止我在GD上启用了jpeg支持。
它节省了我在ubuntu 12.04 64bits
我也使用这些包:
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 :(得分:2)
你很可能需要安装libjpeg的开发版本而不是运行时版本(当然,编译后将需要运行时版本。)
我自己不使用CentOS,但这样的事情应该会有所帮助:
rpm install libjpeg-devel
我的软件包名称可能有误,但请查找-dev
或-devel
后缀的内容。