一点介绍。我正在使用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的结果。
由于
答案 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开始并耐心等待。