Назад | Перейти на главную страницу

Невозможно загрузить Memcached в PHP на Gentoo

Я использую Gentoo Base System Release 2.0.3, apache-2.2.21-r1, php 5.3.8-pl0 и memcached-1.4.5. Я сделал следующее:

emerge dev-php/pecl-memcache   
emerge dev-php/pecl-memcached  
emerge dev-libs/libmemcache  
emerge dev-libs/libmemcached   

все устанавливают нормально. Я запустил memcached и могу подключиться к порту через Telnet и запустить команду stats. Конечно, Я не забыл перезапустить apache.

Теперь о части PHP:

ls -lh /etc/php/apache2-php5.3/ext-active/  
lrwxrwxrwx 1 root root 41 Jan  6 09:58 memcached.ini -> /etc/php/apache2-php5.3/ext/memcached.ini  
lrwxrwxrwx 1 root root 40 Jan  6 09:48 memcache.ini -> /etc/php/apache2-php5.3/ext/memcache.ini

оба содержат extension = memcache.so и extension = memcached.so соответственно.

php -i|grep memcache  
Additional .ini files parsed => /etc/php/cli-php5.3/ext-active/memcache.ini,
/etc/php/cli-php5.3/ext-active/memcached.ini  
memcache  
memcache support => enabled  
memcache.allow_failover => 1 => 1  
memcache.chunk_size => 32768 => 32768  
memcache.compress_threshold => 20000 => 20000  
memcache.default_port => 11211 => 11211  
memcache.hash_function => crc32 => crc32  
memcache.hash_strategy => consistent => consistent  
memcache.lock_timeout => 15 => 15  
memcache.max_failover_attempts => 20 => 20  
memcache.protocol => ascii => ascii  
memcache.redundancy => 1 => 1  
memcache.session_redundancy => 2 => 2  
memcached  
memcached support => enabled  
libmemcached version => 0.39  
Registered save handlers => files user memcache memcached

php -m | grep -i memcache  
memcache  
memcached

Итак, все указывает на то, что модули memcache и memcached загружаются в PHP, НО если я использую <?php phpinfo() ?> он не отображает ни одного загруженного модуля, а только показывает:
Additional .ini files parsed /etc/php/apache2-php5.3/ext-active/memcache.ini, /etc/php/apache2-php5.3/ext-active/memcached.ini
session.save_handler memcache memcache
session.save_path tcp://localhost:11211 tcp://localhost:11211
два значения означают локальное значение и основное значение. Кроме того, если я запустил тестовый код для memcached, например, следующий:

<?php
$memcache = new Memcache;  
$memcache->connect('localhost', 11211) or die ("Connexion impossible");  
$version = $memcache->getVersion();  
echo 'Version: '.$version;  
$memcache->set('key', 'koreus', false, 10) or die ("Echec de la sauvegarde des donné sur le serveur");  
echo "Les donné ont é stocké dans le cache (les donné expireront dans 10 secondes)";   
$get_result = $memcache->get('key');  
echo 'Donné depuis le cache : '. $get_result;  
?>

Я получаю следующее сообщение об ошибке: Неустранимая ошибка: класс Memcache не найден в /var/www/test/mem.php в строке 2

Есть идеи по этому поводу? Я новичок в Gentoo и не нашел ничего особенного, связанного с настройкой на нем memcached + php.
Спасибо.

Ваша текущая ситуация такова, что memcache и memcached правильно загружаются в командной строке из /etc/php/cli-php5.3/ext-active/ но есть не загружен Apache из /etc/php/apache2-php5.3/ext-active/.

Предполагая, что версии этих файлов в интерфейсе командной строки точно такие же, как и версии Apache, возможно, стоит проверить /etc/php/apache2-php5.3/php.ini чтобы убедиться, что он правильно включает файлы в каталог расширений.

Бегать diffс на все под /etc/php/cli-php5.3/ и /etc/php/apache2-php5.3/.

Классический "memcache vs. memcached" ... :-) Эти сообщения могут помочь:

PHP memcached Неустранимая ошибка: класс Memcache не найден: https://stackoverflow.com/questions/2659035/php-memcached-fatal-error-class-memcache-not-found
memcache против memcached?