Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP GD bundled extension without recompiling PHP - solution

The bundled extension offer a lot of functionality. I have spent a lot of time how to compile extension for my version of PHP. So there are instructions.

like image 697
kuba1999 Avatar asked Feb 22 '16 17:02

kuba1999


1 Answers

0, Install PHP development package. Also You should have installed PHP with GD extension (but not bundled)

sudo apt-get install php5-dev

1, Download source code of used PHP (for me 5.6.18)

wget http://cz2.php.net/get/php-5.6.18.tar.gz/from/this/mirror -O php-5.6.18.tar.gz

2, Extract archive

tar -xzf php-5.6.18.tar.gz

3, Go to the source code of GD extension

cd php-5.6.18/ext/gd/

4, Prepare the extension (run phpize in that directory)

phpize

5, Now the configure command

5.1, The arguments depends on Your linux distribution. My was these:

--with-freetype-dir=shared,/usr --with-vpx-dir=shared,/usr --with-jpeg-dir=shared,/usr --with-xpm-dir=shared,/usr/X11R6

5.2, For getting paths for libraries You must run this command and search only the search arguments, which are specified above (5.1)

php-config --configure-options

5.3, Also add this arguments for configure (the second argument makes bundled version)

--with-php-config=/usr/bin/php-config --with-gd 

6, Final configure command

sudo ./configure --with-php-config=/usr/bin/php-config --with-gd --with-freetype-dir=YOUR_VALUE --with-vpx-dir=YOUR_VALUE --with-jpeg-dir=YOUR_VALUE --with-xpm-dir=YOUR_VALUE

7, Now run make

make

8, After compiling You should see something like this:

Libraries have been installed in:
   /home/jakub/php-5.6.18/ext/gd/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Build complete.
Don't forget to run 'make test'.

So in the directory modules You have compiled bundled extension gd.so. 9, Replace NOT bundled gd.so by Your new compiled bundled extension, for my version of PHP It was command:

sudo cp -f ./gd.so /usr/lib/php5/20131226/gd.so

10, Restart Apache

sudo service apache2 restart

Hope this helps! and will You spend less time than me.

like image 136
kuba1999 Avatar answered Sep 21 '22 03:09

kuba1999