更改 PHP 使用的 libxml2 版本
Change which libxml2 version PHP uses
一点介绍。我正在使用 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.
谢谢
我不得不手动重新制作符号链接。他们指向了正确的位置,但出于某种原因 php-fpm in /proc/pid/map_files/blah 仍然具有指向 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 开始并耐心等待。
一点介绍。我正在使用 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.
谢谢
我不得不手动重新制作符号链接。他们指向了正确的位置,但出于某种原因 php-fpm in /proc/pid/map_files/blah 仍然具有指向 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 开始并耐心等待。