我所在公司的老板刚刚将我们的一台服务器升级到了 16.04 版,从此simplexml
它就不再运行了。
我在 apache 日志中看到的错误是:
未捕获错误:调用未定义的函数 simplexml_load_string()
我运行时看到以下内容php -i
:
php:/usr/local/lib/libxml2.so.2:没有可用的版本信息(php 所需)
/usr/local/lib/libxml2.so.2 是指向同一目录(/usr/local/lib)中 libxml2.so.2.7.2 的符号链接。
根据webmin
,当前安装的软件包是libxml2.so.2.9.4
。
我绝不是 Linux 专家,但我们的 PHP 代码需要simplexml
,所以我需要修复这个问题。
有人能提供关于如何解决这个问题的建议吗?
答案1
好的,经过大量研究和反复试验后我终于明白了这一点。
/usr/local/lib/libxml2.so
并且/usr/local/lib/libxml2.so.2
都是指向/usr/local/lib/libxml2.so.2.7.2
正确使用的 libxml 版本是 2.9.4,安装在/usr/lib/x86_64-linux-gnu/libxml2.so.2.9.4
我删除了符号链接(见下文)
sudo rm /usr/local/lib/libxml2.so
sudo rm /usr/local/lib/libxml2.so.2
然后重新创建符号链接,指向正确的版本
sudo ln -s /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.4 /usr/local/lib/libxml2.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.4 /usr/local/lib/libxml2.so.2
一旦我完成此操作并重新启动 Apache,它就可以正常工作。
而我在这里认为 DLL 地狱只存在于 Windows 中;)