imagecreatefromjpeg and similar functions are not working in PHP
PhpGdPhp Problem Overview
I’ve searched for this and the solutions provided in past questions are completely incomprehensible to me. Whenever I run functions like imagecreatefromjpeg
, I get this:
> Fatal error: Call to undefined function imagecreatefromjpeg() ...
I’m working on a new install of PHP; my last installation never had this problem. I don’t get what’s going on.
Php Solutions
Solution 1 - Php
Install GD Library
Which OS you are using?
http://php.net/manual/en/image.installation.php
Windows http://www.dmxzone.com/go/5001/how-do-i-install-gd-in-windows/
Linux http://www.cyberciti.biz/faq/ubuntu-linux-install-or-add-php-gd-support-to-apache/
Solution 2 - Php
In Ubuntu/Mint (Debian based)
$ sudo apt-get install php5-gd
Solution 3 - Php
You can still get Fatal error: Call to undefined function imagecreatefromjpeg()
even if GD is installed.
The solution is to install/enable jped lib:
On Ubuntu:
apt-get install libjpeg-dev
apt-get install libfreetype6-dev
On CentOS:
yum install libjpeg-devel
yum install freetype-devel
If compiling from source add --with-jpeg-dir --with-freetype-dir
or --with-jpeg-dir=/usr --with-freetype-dir=/usr
.
For more details check https://www.tectut.com/2015/10/solved-call-to-undefined-function-imagecreatefromjpeg/
Solution 4 - Php
If you are like me and you are using one of the PHP Docker images as your base, you need to add the gd extension using different instructions then what's discussed above.
For the php:7.4.1-apache
image you need to add in your Dockerfile
:
RUN apt-get update && \
apt-get install -y zlib1g-dev libpng-dev libjpeg-dev
RUN docker-php-ext-configure gd --with-jpeg && \
docker-php-ext-install gd
These dev packages are needed for compilation of the GD php extension. For me this resulted in activation of GD with PNG and JPEG support in PHP.
Solution 5 - Php
You must enable the library GD2.
Find your (proper) php.ini file
Find the line: ;extension=php_gd2.dll and remove the semicolon in the front.
The line should look like this:
extension=php_gd2.dll
Then restart apache and you should be good to go.
Solution 6 - Php
sudo apt-get install phpx.x-gd
sudo service apache2 restart
x.x is the versión php.
Solution 7 - Php
For php 7 on Ubuntu:
> sudo apt-get install php7.0-gd
Solution 8 - Php
After installing php5-gd
apache restart is needed.
Solution 9 - Php
In CentOS, RedHat, etc. use below command. don't forget to restart the Apache. Because the PHP module has to be loaded.
yum -y install php-gd
service httpd restart
Solution 10 - Php
I spent so much time trying to figure this out on Windows after installing PHP Version 8.0.11
.
I created this phpinfo.php
file to check whether GD was loaded:
<?php
if (extension_loaded('gd')) {
print 'gd loaded';
} else {
print 'gd NOT loaded';
}
phpinfo(); ?>
If it returns gd NOT loaded
then ensure that in your php.ini
file you have the following unchecked:
; - Many DLL files are located in the extensions/ (PHP 4) or ext/ (PHP 5+)
; extension folders as well as the separate PECL DLL download (PHP 5+).
; Be sure to appropriately set the extension_dir directive.
;
extension=gd
Further down they'll be a section for extension_dir
on Windows you need to uncheck the following:
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
;extension_dir = "./"
; On windows:
extension_dir = "ext"
You should now see gd loaded
when running the phpinfo.php
file and any function calls (like imagecreatefromjpeg()
) should now work as intended.
Solution 11 - Php
after
systemctl restart php-fpm
the Gd library works.
Solution 12 - Php
As mentioned before, you might need GD library installed.
On a shell, check your php version first:
php -v
Then install accordingly. In my system (Linux-Ubuntu) it's php version 7.0:
sudo apt-get install php7.0-gd
Restart your webserver:
systemctl restart apache2
You should now have GD library installed and enabled.