我们在内部网中使用了一个 Web 服务器(Debian,带有 Apache2、PHP4 和 MySQL)。它的主要用途是提供包含数据和图形的页面,这些图形是根据存储在数据库中的数据动态生成的(使用 jpgraph)。
它已经稳定运行了好几年,但本周我们发现与图表相关的一切都无法正常工作。这包括 jpgraph 和 gnuplot 生成的图表,它们都依赖于库 gd。此外,phpinfo() 中没有对“gd”的引用,并且对 gd 函数(如 gd_info())的任何直接调用都会导致错误。
我们尝试重新安装 php4-gd(并重新启动 Apache),但没有成功。显然我们做错了什么,但我们不知道是什么问题。
我们能做什么?我们还能做其他诊断来找出问题吗?
谢谢。
答案1
问题解决了。/var/log/apache2/error.log
每次重启后检查 Apache 日志都会检测到以下行:
PHP Warning: Unknown(): Unable to load dynamic library '/usr/lib/php4/20050606+lfs/gd.so' - /usr/lib/php 4/20050606+lfs/gd.so: undefined symbol: gdImagePngCtx in Unknown on line 0
这个问题通过添加以下行来解决:extensions_dir = "/usr/lib/php4/20050606+lfs/
并/etc/php4/apache2/php.ini
执行bugs.debian.org,这基本上就是将所有 libgd.so* 库从 /usr/local/lib 中移出(?)。
别问我为什么,但重启 Apache 后一切都恢复正常了。仍然不知道我们做了什么……当然,可能是时候重新安装和升级整个服务器了。
感谢您的关注。
答案2
假设您保留了软件包中的所有内容,请查看在/var/log/dpkg.log
所有内容崩溃时是否发生了更改(安装、升级或删除)的任何软件包。
另一个可能的问题是extension
php.ini 中 gd 插件的行已经消失了;它应该位于/etc/php4/apache2/php.ini
(或类似位置) 的底部;如果缺失,请添加它并重新启动 Apache,看看会出现什么情况。
答案3
您的机器上是否可能安装了多个版本的 PHP,一些版本支持 gd,一些版本不支持,而您链接到了错误的版本?