在Ubuntu中出现了PHP GD库错误

21

我正在使用Ubuntu 11.04,当我打开终端并输入php -a时,它会显示类似于此的错误

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626/gd.so' - /usr/lib/php5/20090626/gd.so: cannot open shared object file: No such file or directory in Unknown on line 0

我觉得GD库存在一些问题。是否有解决它的选项?

4个回答

36

好的,只需尝试:

sudo apt-get install php5-gd

您可能需要在php.ini文件中删除有问题的行,可以在php.ini或/etc/php5/conf.d/gd.ini文件中进行操作。


3
如果您不需要 php5-gd 软件包,另一个解决方案是将其卸载:sudo apt-get purge php5-gd - bonsaiviking
1
如果您正在Ubuntu 18.04中使用php 7.3,请使用“sudo apt install php7.3-gd”命令。 - Eranda

2
可能是类似于以下内容:
sudo apt-get install php-gd

如果应该这样做,如果不行尝试

apt-cache search php | grep gd

1

对我来说,解决方案是:

locate --regex /mcrypt[.]so\$ /gd[.]so\$ /suhosin[.]so\$ /pdo_mysql.so\$ /pdo[.]so /mysqli[.]so\$ '/php5/.*/mysql[.]so$'

这将返回我安装的php5找不到的所有库的位置:

/usr/lib/php5/20090626+lfs/gd.so
/usr/lib/php5/20090626+lfs/mcrypt.so
/usr/lib/php5/20090626+lfs/mysql.so
/usr/lib/php5/20090626+lfs/mysqli.so
/usr/lib/php5/20090626+lfs/pdo.so
/usr/lib/php5/20090626+lfs/pdo_mysql.so

我有点担心这些看起来可能是旧版本,但我仍然使用了它们的路径。Stefgosselin确定了ini文件的位置,/etc/php5/conf.d/。我对它们进行了修改。下面的命令将修改那里的所有*.ini文件,因此请确保您的所有文件都需要进行修改。显然,您需要使用定位命令发现的目标路径替换我的路径,/usr/lib/php5/20090626+lfs/

 sudo sed -ri -e "s|^(extension=)(\w{2,10}[.]so)$|\1/usr/lib/php5/20090626+lfs/\2|g" /etc/php5/conf.d/*.ini

在找到这个解决方案之前,我尝试了几次apt-get purgeapt-get reinstall命令,但都没有成功。我不确定,但我的问题可能源于从源代码安装zend或使用aptitude安装phpmyadmin。它从未引起任何php错误,只是你提到的烦人的警告。最终,php5可以无错误启动:

php5 --version

输出为...

PHP 5.3.5-1ubuntu7.2 with Suhosin-Patch (cli) (built: May  2 2011 23:18:30)  Copyright (c) 1997-2009 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH

尽管你的解决方案确实起到了作用,但你给自己带来了很多麻烦。只需在gd.ini中删除有问题的行并重新安装最新的gd二进制文件即可达到同样的效果。但是,嘿,我为你使用sed而点赞!愉快编码,伙计,感谢你的贡献。 - Stephane Gosselin
@stefgosselin,我可能在尝试更复杂的解决方案之前已经尝试过那个了,但我会再试一次以确保。谢谢。也感谢您的点赞。 - hobs
1
另外需要注意的是,如果您正在使用php5-fpm,则需要重新启动它,例如 sudo service php5-fpm restart - ur5us
好的,这个解决方案确实做到了它所说的,但并不一定解决了问题。我遇到了和你一样的情况,但是你提供的命令有效地改变了 /etc/php5/conf.d 中受影响的文件,但也导致了其他一些东西停止工作。也许我漏掉了什么? - Geppettvs D'Constanzo

1

sudo apt install php-gd 可以使用,但是它会下载最新版本的 PHP 插件。

如果您的 PHP 版本不是最新的,则可以在其中添加版本号:

# PHP 7.1
sudo apt install php7.1-gd

# PHP 7.2:
sudo apt install php7.2-gd

# PHP 7.3
sudo apt install php7.3-gd

# PHP 7.4 (latest)
sudo apt install php-gd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接