PHP memcached Фатальна помилка: Клас 'Memcache' не знайдено


81

Я вставив приклад з php.net для використання memcached у php, і я отримую:

Fatal error: Class 'Memcache' not found

У мене це є в моєму php.ini:

[memcache]
memcache.hash_strategy = "послідовний"
memcache.max_failover_attemps = 100
memcache.allow_failover = 1

Ось інформація з php -i та php -m відповідно:

php -i | grep -i memcache
memcached
memcached підтримка => увімкнена
версія libmemcached => 0,37
Зареєстровані обробники збереження => файли користувач sqlite memcached

php -m | grep -i memcache
memcached

Отже, здається, php завантажив memcached як модуль, а інформація про php говорить, що він завантажений і використовує v .37. Я ще не пробував через apache, я використовую це лише через cli зараз. Будь-які думки?


1
можливо дублікат ... stackoverflow.com/questions/1171313 / ...

Я просто подивився це, і у мене вже є розширення, перераховане в моєму php.ini, і я вже переконався, що мій extension_dir вказано правильне місце.
jpfuentes2,

Дивіться мою відповідь нижче для простої команди встановити 'MEMCACHE'.
Phill Healey

1
sudo apt-get install php-memcacheце те, що мені вдалося. package.ubuntu.com/… відображає доступні пакети.
Райан

Відповіді:


131

У PHP є два розширення для memcached, " memcache " та " memcached ".

Схоже, ви намагаєтесь використовувати один ("memcache"), але інший встановлений ("memcached").


4
Це якось безглуздо, але це, на жаль, часта модель у PHP. Замість того, щоб оновити старе розширення для роботи з новими речами кращими способами, але зламати компт назад, вони просто створили нове розширення. Див. Також mysql та mysqli.
Чарльз,

Це здається правильною проблемою. Але всі інструкції, які я знаходжу, начебто говорять про встановлення memcached, але див. Memcache. Це трохи заплутано.
Патрік

7
Добре, я знайшов просте виправлення (оскільки все інше, здавалося, не працювало). Просто запустіть цю команду: sudo aptitude install memcached php5-memcached
Patrick

Зауважте, що ці імена пакетів працюватимуть лише на певних похідних Debian. Назви пакетів будуть відрізнятися в інших середовищах.
Чарльз

1
Ніяких реальних впливів на продуктивність від завантаження обох не повинно бути.
Чарльз

22

Незважаючи на те, що прийнята відповідь говорить у коментарях, правильним способом встановлення 'Memcache' є:

sudo apt-get install php5-memcache

ПРИМІТКА Memcache та Memcached - це два різні, хоча і пов’язані між собою частини програмного забезпечення, які часто плутають.

EDIT Оскільки це вже старий пост, я вважав, що варто згадати, що вам слід замінити php5 на номер вашої версії php.


Через пару років я думаю, що ця відповідь застаріла. sudo apt-get install php-memcacheце те, що мені вдалося. package.ubuntu.com/… відображає доступні пакети.
Райан

1
@Ryan Звичайно, це стосується лише випадків, коли не використовується PHP5. Багато серверів все ще використовують PHP5, тому він настільки ж дійсний, як і в той час. Крім того, питання позначене тегом ubuntu-9.10, тому це ще більше підтверджує мою відповідь, оскільки воно безпосередньо стосується цієї версії.
Phill Healey

"Memcached & Memcached" ??
Брайан Лейшман

Чи є рішення для вікон?
IrfanAnwar

1

Я знайшов рішення в цьому дописі: /programming/11883378/class-memcache-not-found-php# =

Я знайшов робочі файли dll для PHP 5.4.4

Я не знаю, наскільки вони стабільні, але вони працюють точно. Подяки йде за цим посиланням.

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

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

Це версія 2.2.5.0, яку я помітив після її компіляції (для PHP 5.4.4).

Зверніть увагу, що це не 2.2.6, але працює. Я також відображав їх у власному FTP. Дзеркальні посилання:

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


0

Праворуч - php_memcache.dll . У моєму випадку я використовував lib, скомпільований з vc9 замість vc6 компілятора. У журналах помилок apatche я отримав щось на зразок:

Запуск PHP: sqlanywhere: Неможливо ініціалізувати модуль Модуль, скомпільований зі збіркою ID = API20090626, TS, VC9 PHP, скомпільований з збіркою ID = API20090626, TS, VC6 Ці параметри повинні відповідати

Перевірте, чи є у вас однаковий журнал, і спробуйте завантажити різні dll, скомпільовані за допомогою іншого компілятора.



-8

Я зайшов у wp-config / і видалив object-cache.php та advanced-cache.php, і він у мене справно працював.


2
Все, що було зроблено, це перешкодити вашій установці WordPress мати можливість виконувати кешування будь-яких об’єктів. Це насправді не є виправленням нічого, не кажучи вже про запитання, поставлене ОП.
Phill Healey
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.