Класс "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

Я хочу, чтобы это было полезно для вас!