更改PHP使用的libxml2版本

时间:2017-12-08 23:35:05

标签: php xml-rpc libxml2 php-5.6

一点介绍。我正在使用xmlrpc_server_call_method来解析XML请求,并对XML中包含的数据执行XML中指定的操作。我需要处理的XML大于10MB,主要是由于一个非常长的文本行,因此我需要使用修改后的parserInternals.h文件编译libxml2。我已经成功编译了libxml2并得到了libxml2.so,libxml2.so.2和libxml2.so.2.9.7文件。

我遇到的问题是让PHP识别出要使用的libxml2.so。我还要编译php-xmlrpc吗?我已经使用新的libxml2.so替换了我服务器上的每个libxml2.so,并且PHP仍然认为我的系统上有某个2.9.1(根据phpinfo())。

此外,ldconfig显示libxml2.so.2 -> libxml2.so.2.9.7,但根本不显示libxml2.so。

ldd xmlrpc.so的输出:

libxml2.so.2 => /lib64/libxml2.so.2 (memory address goes here)

/ lib64链接到/ usr / lib64,该目录中的libxml2.so.2链接到libxml2.so.2.9.7,这是编译修改后的libxml2的结果。

由于

1 个答案:

答案 0 :(得分:0)

我不得不手动重新制作符号链接。他们指向正确的位置,但由于某种原因,/ proc / pid / map_files / blah中的php-fpm仍然具有到libxml2.so.2.9.1的符号链接,即使在使用systemctl restart rh-php56-php-fpm重新启动之后也是如此。我用ln -sf libxml2.so.2.9.7 libxml2.so.2重新创建了符号链接,然后重新启动了php-fpm服务,瞧。

感谢GhostGambler教我ldd。这是一个非常有用的教训。

编辑:作为参考,我使用以下命令来确定是否还有使用较旧的libxml2库的进程:

find / -exec ls -ald {} ';' 2>/dev/null | grep '\-> /path/to/library_of_interest.so'

这很慢......所以最好从/ proc开始并耐心等待。