Không thể tải phần mở rộng memcache.so


9

Tôi đã xây dựng PHP từ nguồn với lệnh configure

'./configure' '--prefix=/usr/local/php-5.2.8' '--with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d' '--with-apxs2=/usr/local/httpd/bin/apxs' '--with-mysql=/usr/local/mysql/' '--with-zlib' 

Tôi đã cài đặt phần mở rộng php memcache:

wget http://pecl.php.net/get/memcache
tar -zxvf memcache-2.2.5.tgz
cd memcache-2.2.5
phpize
./configure --enable-memcache
make
make install

Tôi thêm vào /usr/local/lib/php.in

extension=memcache.so

Đã khởi động lại apache của tôi và chạy php-m nhưng php dường như không tải phần mở rộng memcache Tôi đã theo giải pháp này từ trang web này http://www.howtoforge.com/forums/showthread.php?t=26554

Tôi đã thêm đường dẫn đầy đủ

extension=/usr/local/lib/php/extensions/no-debug-non-zts-20060613/memcache.so 

khởi động lại apache Nhưng nó không tải phần mở rộng memcache! Tôi google xung quanh nhưng cùng một vấn đề! Làm cách nào tôi có thể tải tiện ích mở rộng này _ _ "

Câu trả lời:


1

Trước tiên hãy chạy nhị phân php của bạn như

php -v

Nó nên phàn nàn rằng php.ini của bạn muốn tải các mô-đun không thể tải ...

Nếu nó không phàn nàn, hãy chạy

php --ini

Điều này sẽ cung cấp cho bạn vị trí của php.ini (chỉ cần chỉnh sửa sai: D)

Điều này có giúp được gì không?


1

Vấn đề là ..., tại thời điểm này: wget http://pecl.php.net/get/memcache Thay vì tar -zxvf memcache-2.2.5.tgz, bạn nên làm tar -zxvf memcache(đây là tên tệp từ wget).

Sau khi bạn giải nén tập tin, bạn sẽ nhận được phiên bản memcache mới nhất, tại thời điểm tôi thực hiện việc này, tôi nhận được thư mục memcache-3.0.8 .

Vì vậy, các bước tiếp theo sẽ là:

cd memcache-3.0.8 
phpize 
./configure --enable-memcache 
make
make install

Và cuối cùng, đừng quên thêm dòng này vào php.ini của bạn:

extension = memcache.so

Và khởi động lại Apache.


0

Bạn có chắc chắn memcached được cài đặt ở vị trí chính xác? Bạn nhận được gì nếu bạn chạy:locate memcache.so

Là memcached được cài đặt (nhị phân)? Nó có yêu cầu bất kỳ thư viện bổ sung (libmemcache) không?


Bạn nên sử dụng find, not location, với điều kiện là nó có thể chưa nằm trong db xác định vị trí.
Cian

Trình nền memcached được cài đặt thành công! và khi tôi định vị phần mở rộng memcache, hãy tìm memcache.so /usr/local/lib/php/extensions/no-debug-non-zts-20060613/memcache.so /usr/local/src/memcache-2.2.5/.libs /memcache.so /usr/local/src/memcache-2.2.5/modules/memcache.so Tôi nghĩ rằng vấn đề là php đã không tải phần mở rộng!
billyduc

0

Thêm một lệnh extension_dirđể cho PHP biết nơi tải các phần mở rộng từ đó và xóa đường dẫn khỏi lệnh extension.

extension = memcache.so
extension_dir = /usr/local/lib/php/extensions/no-debug-non-zts-20060613

tội nghiệp tôi ! Nó không hoạt động!
billyduc

0

Một điều giúp tôi là sử dụng

pecl uninstall memcache
pecl install memcache

Một điều nữa (điều này chỉ áp dụng cho các phiên bản php khá cũ): http://www.hollub.at/phpmanual/ref.memcache.html nói:

In order to use these functions you must compile PHP with Memcache support by using the --enable-memcache[=DIR] option. 

0

điều này là do / var / tmp của bạn được gắn với sự cho phép của noexec

bạn có thể thử biên dịch lại memcache bằng lệnh fuenfundachtzig sau khi tạm thời xóa / var / tmp symlink và tạo thư mục / var / tmp mới. (cài đặt này có thể khác với máy chủ của bạn)

#rm /var/tmp
#mkdir /var/tmp

#pecl install memcache

sau đó bảo mật thư mục tạm thời của bạn

#rm -rf /var/tmp
#ln -s /tmp /var/tmp

đọc thêm về bảo mật tmp tại đây

cách sử dụng PECL với tmp được gắn với noexec


0

Nếu bạn đã biên dịch PHP, hãy thử xóa extension_dir khỏi php.ini của bạn .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.