2009-03-04 11 views
7

Ich versuche, eine Kopie von PHP 5 in meinem Home-Verzeichnis auf dem Schulcomputer zu installieren. Das Problem ist, dass, wenn ich es versuche, es klagt, dass meine Kopie von libxml2 zu alt ist, um zu arbeiten.Installieren Sie PHP 5 ohne libxml2

Gibt es eine Möglichkeit, dass ich diese ohne Upgrade libxml2 installieren kann, da ich keine Berechtigung zum Upgrade habe.

Irgendwelche Vorschläge?

Antwort

3

Es gibt einige Diskussion dieses Problems in der Diskussion der PHP configuration documentation. Sie können die XML-Funktionen deaktivieren, um die Probleme zu vermeiden, aber Sie werden viele nützliche Funktionen verlieren: --disable-libxml --disable-dom --disable-simplexml --disable-xml --disable-xmlreader --disable-xmlwriter --without-pear

Die meisten Kommentare deuten stark darauf hin, dass dies eine schlechte Idee ist. Ich würde vorschlagen, herauszufinden, wie man das xmllib aktualisiert bekommt.

7

Wenn Sie keine XML-Unterstützung benötigen, nur um es zu deaktivieren, wie auf this page beschrieben:

--disable-libxml --disable-dom --disable-simplexml --disable-xml --disable-xmlreader --disable-xmlwriter --without-pear 

Auf der anderen Seite, können Sie versuchen, eine neuere Version von libxml zu kompilieren, ohne sie zu installieren.

9

Alternativ können Sie eine von libxml in Ihrem Home-Verzeichnis machen installieren und den Ort passieren konfigurieren, wo Sie es installiert haben, dh

--with-libxml-dir=<your local install> 

Wenn Libxml Installation, die Sie gerade mit der --prefix= Option verwenden Konfigurieren Sie, um anzugeben, dass Sie keine Systeminstallation durchführen möchten.

Unter der Annahme, dass Sie die cli Client erstellt (und dass der lib-Suchpfad für den aktuellen Benutzer und die Apache-Benutzer gleich sind), überprüfen Sie, dass die richtige lib verbunden ist mit:

# 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 ist in der Liste der Bibliotheken aufgelistet.

+0

Dies ist wahrscheinlich der beste Vorschlag bisher gepostet. – acrosman

+0

Das Problem wird dann sein, sicherzustellen, dass es die private libxml2 anstelle der Systembibliothek lädt, wenn PHP gestartet wird. –

+0

@Ignacio Ich habe einen zusätzlichen Schritt hinzugefügt, um dies zu testen. –