PHP memcached Lỗi nghiêm trọng: Không tìm thấy lớp 'Memcache'


81

Tôi đã dán ví dụ từ php.net để sử dụng memcached trong php và tôi nhận được:

Fatal error: Class 'Memcache' not found

Tôi có cái này trong php.ini của mình:

[memcache]
memcache.hash_strategy = "nhất quán"
memcache.max_failover_attemps = 100
memcache.allow_failover = 1

Đây là thông tin từ php -i và php -m tương ứng:

php -i | grep -i memcache
memcached
hỗ trợ memcached =>
phiên bản libmemcached được bật => 0.37
Trình xử lý lưu đã đăng ký => tệp người dùng sqlite memcached

php -m | grep -i memcache
memcached

Vì vậy, php dường như đã tải memcached dưới dạng một mô-đun và thông tin php cho biết rằng nó đã được tải và đang sử dụng v .37. Tôi vẫn chưa thử qua apache, hiện tại tôi chỉ sử dụng cái này thông qua cli. Có suy nghĩ gì không?


1
có thể trùng lặp ... stackoverflow.com/questions/1171313/…

Tôi vừa mới xem qua và tôi đã có tiện ích mở rộng được liệt kê trong php.ini của mình và tôi đã đảm bảo rằng extension_dir của tôi được trỏ đến đúng nơi.
jpfuentes2

Xem câu trả lời của tôi bên dưới để biết lệnh đơn giản để cài đặt 'MEMCACHE'.
Phill Healey

1
sudo apt-get install php-memcachelà những gì đã làm việc cho tôi. package.ubuntu.com/… hiển thị các gói có sẵn.
Ryan

Câu trả lời:


131

Có hai phần mở rộng cho memcached trong PHP, " memcache " và " memcached ".

Có vẻ như bạn đang cố sử dụng một cái ("memcache"), nhưng cái kia đã được cài đặt ("memcached").


4
Nó hơi ngớ ngẩn, nhưng không may nó là một mẫu thường xuyên trong PHP. Thay vì cập nhật tiện ích mở rộng cũ hơn để làm việc với những thứ mới hơn theo những cách tốt hơn, nhưng phá vỡ tính năng ngược, họ chỉ đơn giản tạo ra một tiện ích mở rộng mới. Xem thêm mysql và mysqli.
Charles

Đây có vẻ là vấn đề đúng. Nhưng tất cả các hướng dẫn tôi tìm thấy dường như nói để cài đặt memcached, nhưng lại thấy memcache. Điều này hơi khó hiểu.
Patrick

7
Ok, tôi đã tìm thấy một bản sửa lỗi đơn giản (vì mọi thứ khác dường như không hoạt động). Chỉ cần chạy lệnh này: sudo aptitude install php5-memcached memcached
Patrick

Lưu ý rằng các tên gói đó sẽ chỉ hoạt động trên một số dẫn xuất Debian cụ thể. Các tên gói sẽ khác nhau trong các môi trường khác.
Charles

1
Sẽ không có tác động thực sự về hiệu suất khi tải cả hai, không.
Charles

22

Bất chấp câu trả lời được chấp nhận nói gì trong các nhận xét, cách chính xác để cài đặt 'Memcache' là:

sudo apt-get install php5-memcache

LƯU Ý Memcache và Memcached là hai phần mềm khác nhau mặc dù có liên quan đến nhau nhưng thường bị nhầm lẫn.

CHỈNH SỬA Vì đây là một bài viết cũ nên tôi nghĩ bạn nên thay thế php5 bằng số phiên bản php của mình.


Một vài năm sau, tôi nghĩ câu trả lời này đã lỗi thời. sudo apt-get install php-memcachelà những gì đã làm việc cho tôi. package.ubuntu.com/… hiển thị các gói có sẵn.
Ryan

1
@Ryan Chắc chắn, điều đó chỉ áp dụng nếu không sử dụng PHP5. Nhiều máy chủ vẫn sử dụng PHP5 nên nó vẫn hợp lệ như lúc đó. Ngoài ra, câu hỏi được gắn thẻ ubuntu-9.10 vì vậy điều này xác nhận thêm câu trả lời của tôi vì nó liên quan trực tiếp đến phiên bản đó.
Phill Healey

"Memcached & Memcached" ??
Brian Leishman

Có một giải pháp cho các cửa sổ?
IrfanAnwar

1

Tôi đã tìm thấy giải pháp trong bài đăng này: /programming/11883378/class-memcache-not-found-php# =

Tôi đã tìm thấy các tệp dll đang hoạt động cho PHP 5.4.4

Tôi không biết chúng ổn định như thế nào nhưng chúng hoạt động chắc chắn. Tín dụng đi đến liên kết này.

http://x32.elijst.nl/php_memcache-5.4-nts-vc9-x86.zip

http://x32.elijst.nl/php_memcache-5.4-vc9-x86.zip

Đó là phiên bản 2.2.5.0, tôi nhận thấy sau khi biên dịch nó (đối với PHP 5.4.4).

Xin lưu ý rằng nó không phải là 2.2.6 nhưng hoạt động. Tôi cũng sao chép chúng trong FTP của riêng mình. Đường dẫn gương:

http://mustafabugra.com/resim/php_memcache-5.4-vc9-x86.zip http://mustafabugra.com/resim/php_memcache-5.4-nts-vc9-x86.zip


0

Bên phải là php_memcache.dll . Trong trường hợp của tôi, tôi đang sử dụng lib được biên dịch bằng vc9 thay vì trình biên dịch vc6. Trong nhật ký lỗi apatche, tôi có một cái gì đó như:

Khởi động PHP: sqlanywhere: Không thể khởi tạo mô-đun Mô-đun được biên dịch với ID xây dựng = API20090626, TS, VC9 PHP được biên dịch với ID xây dựng = API20090626, TS, VC6 Các tùy chọn này cần phải khớp

Kiểm tra xem bạn có nhật ký giống nhau hay không và thử tải xuống các dll khác nhau được biên dịch bằng trình biên dịch khác.


0

Đối với người dùng OSX:

Chạy lệnh sau để cài đặt Memcached:

brew install memcached

-8

Tôi đã vào wp-config / và xóa object-cache.php và advanced-cache.php và nó hoạt động tốt đối với tôi.


2
Tất cả những gì đã làm là ngăn cài đặt WordPress của bạn không thể thực hiện bất kỳ bộ nhớ đệm đối tượng nào. Nó không thực sự là một bản sửa lỗi cho bất cứ điều gì, hãy để một mình câu hỏi của OP.
Phill Healey
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.