Класс "Memcache" не найден и PHP
Я установил memcached, прочитав эту статью в Windows7, но, к сожалению, я продолжаю получать ошибку Fatal error: Class 'Memcache' not found in D:\xampp\htdocs\test\memcache\test.php on line 2
Строка 2: $memcache = new Memcache;
Win7 64, установлен Xampp. Я использую net start "memcached Server"
в командной строке, но он говорит, что служба уже запущена.
Дополнительная информация, которая может помочь;
В файле php.ini:
extension=php_memcache.dll
[Memcache]
memcache.allow_failover = 1
memcache.max_failover_attempts=20
memcache.chunk_size =8192
memcache.default_port = 11211
Обновление: phpinfo(); show dll не загружается. Пробовал несколько разных DLL файлов до сих пор, не работал. Также dll находится правильно. Кажется, он находится в правильной папке.
(PS Некоторые могут подумать, что есть возможные дубликаты этой темы, но есть только 1 человек, которые следовали тем же инструкциям и имели ту же ошибку в SO. нет ответа или решения после марша.)
Ответы
Ответ 1
Я нашел рабочие 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
Ответ 2
Добавьте это в свой php.ini:
extension="php_memcache.dll"
и перезапустите apache
Ответ 3
Memcached использует стандартный текстовый интерфейс, поэтому его можно использовать без модуля.
// connect
$link = fsockopen($host,$port,$errno,$errst,$timeout);
// set
$data = sprintf("set %s 0 %s %s\r\n%s\r\n",
$key,$expire,strlen($value),$value);
fwrite($link,$data);
$result = trim(fgets($link));
if ($result == 'ERROR') {
// :(
}
// get
$data = sprintf("get %s\r\n",$key);
fwrite($link,$data);
$line = rtrim(fgets($link));
if ($line != 'END') {
return rtrim(fgets($link));
}
Ответ 4
Итак, я посмотрел на решение. Здесь вы можете загрузить некоторые скомпилированные расширения.
http://downloads.php.net/pierre/
Проблема в том, что на данный момент нет расширения memcache для PHP 5.4. это проблема, почему ваше расширение не может быть загружено. Вам нужно расширение для правильной версии PHP и Tead Safe для Windows.
Таким образом, самый простой способ - работать с PHP 5.3, если вам нужно расширение.
Самая новая версия memcache - это версия 3.0.6, но ее бета-версия вы можете увидеть здесь.
http://pecl.php.net/package/memcache
Вы можете попытаться взять бета-версию и скомпилировать ее с вашей системой Windows. Но его много работы.
Ответ 5
Также проблема может заключаться в загрузке другой версии php-модуля где-нибудь в файлах apache.conf. Необходимо проверить дублированные директивы "LoadModule php...", и если этот модуль скомпилирован для исправления версии apache.
Кажется, это звучит просто, но не тогда, когда у вас есть несколько версий php на одной машине:)
Или это может быть проблема SElinux.
Ответ 6
Версия xampp для Windows - 32 бит, вы должны использовать 32bit memcache.dll
Я хочу, чтобы это было полезно для вас!