2009-03-04 47 views
7

Tôi đang cố gắng cài đặt bản sao của PHP 5 vào thư mục chính của tôi trên máy tính của trường học. Vấn đề là bất cứ khi nào tôi thử, nó phàn nàn rằng bản sao libxml2 của tôi quá lỗi thời để làm việc.Cài đặt PHP 5 mà không cần libxml2

Có cách nào để tôi có thể cài đặt này mà không cần nâng cấp libxml2 vì tôi không có quyền nâng cấp hay không.

Mọi đề xuất?

Trả lời

3

Có một số thảo luận về vấn đề này trong cuộc thảo luận của PHP configuration documentation. Bạn có thể vô hiệu hóa các tính năng XML để tránh các vấn đề, nhưng bạn sẽ mất rất nhiều tính năng hữu ích: --disable-libxml --disable-dom --disable-simplexml --disable-xml --disable-xmlreader --disable-xmlwriter --without-pear

Hầu hết các ý kiến ​​đều cho rằng đây là một ý tưởng tồi. Tôi muốn đề nghị cố gắng tìm ra cách để nâng cấp xmllib.

7

Nếu bạn không cần sự hỗ trợ xml, chỉ cần vô hiệu hóa nó như mô tả trên this page:

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

Mặt khác, bạn có thể cố gắng biên soạn một phiên bản mới hơn của libxml mà không cần cài đặt nó.

9

Ngoài ra, bạn có thể thực hiện một cài đặt của libxml trong thư mục chính của bạn và vượt qua cấu hình vị trí mà bạn đã cài đặt nó, tức là

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

Khi cài đặt libxml, bạn chỉ cần sử dụng tùy chọn --prefix= với cấu hình để cho biết rằng bạn không muốn cài đặt hệ thống.

Giả sử bạn biên soạn client cli (và rằng con đường tìm kiếm lib cho người sử dụng hiện tại và người dùng apache đều giống nhau), bạn kiểm tra xem các lib đúng được liên kết với:

# 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 là được liệt kê một nửa chiều xuống danh sách thư viện.

+0

Đây có lẽ là gợi ý tốt nhất được đăng cho đến thời điểm này. – acrosman

+0

Sự cố sau đó sẽ đảm bảo rằng nó tải libxml2 riêng thay vì thư viện hệ thống khi khởi động PHP. –

+0

@Ignacio Tôi đã thêm một bước bổ sung để thử kiểm tra điều này. –

Các vấn đề liên quan