PHP 版本是 5.6,相当旧了。使用apt-get install php5-gd
不再有效。
我可以找到这些gd.so
:
/usr/lib/php/20151012/gd.so
/usr/lib/x86_64-linux-gnu/libgd.so.3 -- links to 3.0.0 below
/usr/lib/x86_64-linux-gnu/libgd.so.3.0.0
要启用,我想我必须在、等gd
中设置其中之一。mods_available
mods_enabled
我猜我需要gd.so
在一个公共位置使用一个别名来链接到上述之一,但是将其放在哪里以及链接到哪一个?
有手动设置的分步指南吗?
答案1
尝试gd
直接安装,但不再可用:
$ sudo apt-get install php5-gd
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package php5-gd is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'php5-gd' has no installation candidate
似乎也没有可用ppa:ondrej/php
,这是最好的选择。
我们确实有一个现有的 SO,所以这些是我尝试修补它的步骤。
找到另一个SO:
$ locate gd.so
...
/usr/lib/php/20151012/gd.so
...
在 PHP 扩展目录中创建一个指向20131226
现有扩展目录的链接:
$ cd /usr/lib/php/20131226
$ sudo ln -s /usr/lib/php/20151012/gd.so gd.so
为此 SO 创建一个 INI 文件:
$ cd /etc/php/5.6/mods-available
$ echo -e '; configuration for php common module\n; priority=20\nextension=gd.so' | sudo tee gd.ini
; configuration for php common module
; priority=20
extension=gd.so
启用模块:
$ cd /etc/php/5.6/apache2/conf.d
$ sudo ln -s /usr/lib/php/5.6/mods-available/gd.ini 20-gd.ini
重新启动 Apache 并查看会发生什么:
$ sudo service apache2 restart
$ cat /var/log/apache2/error.log
...
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20131226/gd.so' - /usr/lib/php/20131226/gd.so: undefined symbol: zend_list_close in Unknown on line 0
...
是的,没用,但看起来它找到了它并尝试加载它。撤消所有操作并重新启动以确保一切恢复正常:
$ cd /etc/php/5.6/apache2/conf.d
$ sudo rm 20-gd.ini
$ cd /etc/php/5.6/mods-available
$ sudo rm gd.ini
$ cd /usr/lib/php/20131226
$ sudo rm gd.so
$ sudo service apache2 restart
唯一的解决办法就是建议升级到更高版本的PHP!