我正在尝试将 PHP 5 的副本安装到学校计算机上的主目录中。问题是,每当我尝试时,它都会抱怨我的 libxml2 副本太旧而无法工作。
有什么方法可以在不升级 libxml2 的情况下安装它,因为我没有升级权限。
有什么建议么?
或者,您可以在您的主目录中安装 libxml 并通过配置您安装它的位置,即
--with-libxml-dir=<your local install>
安装 libxml 时,您只需使用--prefix=
configure 选项来指示您不想进行系统安装。
假设您编译了 cli 客户端(并且当前用户和 apache 用户的 lib 搜索路径相同),您检查是否链接了正确的 lib:
# ldd /usr/bin/php
linux-vdso.so.1 => (0x00007ffff71ff000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00000030f3c00000)
libedit.so.0 => /usr/lib64/libedit.so.0 (0x00000030e8000000)
libncurses.so.5 => /lib64/libncurses.so.5 (0x00000030f7400000)
libgmp.so.3 => /usr/lib64/libgmp.so.3 (0x00000030e7800000)
libbz2.so.1 => /lib64/libbz2.so.1 (0x00000030f7800000)
libz.so.1 => /lib64/libz.so.1 (0x00000030e6c00000)
libpcre.so.0 => /lib64/libpcre.so.0 (0x00000030f9400000)
librt.so.1 => /lib64/librt.so.1 (0x00000030e7000000)
libm.so.6 => /lib64/libm.so.6 (0x00000030e5c00000)
libdl.so.2 => /lib64/libdl.so.2 (0x00000030e6400000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00000030f6800000)
libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00000030f2400000))
libssl.so.10 => /usr/lib64/libssl.so.10 (0x00000030f3000000)
libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00000030eb400000)
libc.so.6 => /lib64/libc.so.6 (0x00000030e6000000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00000030e7c00000)
libfreebl3.so => /lib64/libfreebl3.so (0x00000030f3800000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00000030f7c00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00000030e6800000)
/lib64/ld-linux-x86-64.so.2 (0x00000030e5800000)
libxml 列在库列表的中间。
如果您不需要 xml 支持,只需按照本页所述禁用它:
--disable-libxml --disable-dom --disable-simplexml --disable-xml --disable-xmlreader --disable-xmlwriter --without-pear
另一方面,您可以尝试编译较新版本的 libxml 而无需安装它。
在PHP 配置文档的讨论中有一些关于这个问题的讨论。你可以禁用 XML 特性来避免这些问题,但是你会失去很多有用的特性:
--disable-libxml --disable-dom --disable-simplexml --disable-xml --disable-xmlreader --disable-xmlwriter --without-pear
大多数评论强烈建议这是一个坏主意。我建议尝试弄清楚如何升级 xmllib。
安装xmltools怎么样?