To enable GD-support configure PHP --with-gd[=DIR] , where DIR is the GD base install directory. To use the recommended bundled version of the GD library (which was first bundled in PHP 4.3.0), use the configure option --with-gd . GD library requires libpng and libjpeg to compile.
In Windows, you'll include the GD2 DLL php_gd2.dll as an extension in php.ini. The GD1 DLL php_gd.dll was removed in PHP 4.3.2. Also note that the preferred truecolor image functions, such as imagecreatetruecolor(), require GD2.
Enhance the capabilities of GD to handle more image formats by specifying the --with-XXXX configure switch to your PHP configure line.
Image Format | Configure Switch |
---|---|
jpeg | To enable support for jpeg add --with-jpeg-dir=DIR . Jpeg 6b, 7 or 8 are supported. |
png | To enable support for png add --with-png-dir=DIR . Note, libpng requires the zlib library, therefore add --with-zlib-dir[=DIR] to your configure line. |
xpm | To enable support for xpm add --with-xpm-dir=DIR . If configure is not able to find the required libraries, you may add the path to your X11 libraries. |
Hinweis: When compiling PHP with libpng, you must use the same version that was linked with the GD library.
Enhance the capabilities of GD to deal with different fonts by specifying the --with-XXXX configure switch to your PHP configure line.
Font library | Configure Switch |
---|---|
FreeType 1.x | To enable support for FreeType 1.x add --with-ttf[=DIR] . |
FreeType 2 | To enable support for FreeType 2 add --with-freetype-dir=DIR . |
T1lib | To enable support for T1lib (Postscript Type 1 fonts) add --with-t1lib[=DIR] . |
Native TrueType string function | To enable support for native TrueType string function add --enable-gd-native-ttf . |
In Slackware 64bit (I tested 13.1) you need to make symlinks to libpng and libjpeg if you want to compile php with GD, even if you've already installed them, otherwise configure will give you a "libpng not found" error, even if you set --with-libdir=/usr/lib64 (it seems to have no effects at all). So, run these before configuring:
ln -s /usr/lib64/libjpeg.so /usr/lib/libjpeg.so
ln -s /usr/lib64/libpng.so /usr/lib/libpngp.so
If you have already compiled PHP and want to recompile '--with-gd', don't forget to run 'make clean' first!
On 64bit centos, needed to create links from lib64 to lib. Php seems to insist on looking in lib, even with "with-jpeg-dir" config.
Eg
ln -s /usr/lib64/libjpeg.so.62.0.0 /usr/lib/libjpeg.so
ln -s /usr/lib64/libpng.so.3.10.0 /usr/lib/libpng.so
./configure \
--with-config-file-path=/etc \
--prefix=/usr \
--with-bz2 \
--enable-zip \
--enable-mbstring \
--with-apxs2=/usr/sbin/apxs \
--with-zlib-dir=/usr/include \
--with-libxml-dir=/usr/lib64 \
--with-mcrypt=/usr/lib64 \
--with-mysql \
--with-gd \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--enable-calendar
If you have already compiled php without jpeg support and decide you want it , then before you compile again you might need to run "make clean" first.
For Redhat Linux 64 bit machine:
--with-libdir=lib64 --with-gd --with-jpeg-dir --with-png-dir
It should be noted that it might be pretty easy to install gd without the need to recompile php, when using debian:
apt-get install php5-gd
On my system,I had to ensure I had not only libpng and libjpeg, but also the libpng-devel and libjpeg-devel packages installed.
Everytime I try to install the gd-lib as a dynamic extension, I run into the same problem: It wont work.
I get the following error:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/pkg/lib/php/20040412/gd.so' - dlopen(/usr/pkg/lib/php/20040412/gd.so, 9): Symbol not found: __cg_jpeg_resync_to_restart\n Referenced from: /System/Library/Frameworks/ApplicationServices. framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO\n Expected in: /usr/pkg/lib/libjpeg.62.dylib\n in Unknown on line 0
I use pkgsrc for software package managment on my mac, as may be apparent from the paths.
The solution is, to edit the file /usr/pkg/sbin/envvars and remove or comment the DYLD_LIBRARY_PATH because it is causing the error...
jpeg [jpg] file processing doesn't work unless you build php with '--with-jpeg-dir=<path to jpeg library>'.
It still doesn't work unless <path to jpeg library> points to the directory holding the directory holding the library unless libjpeg.<whatever> is in either /usr/lib or /usr/local/lib. For instance, on a mac with libjpeg.a installed via mac ports, you need '/opt/local' rather than '/opt/local/lib'