我使用的是Gentoo Base System 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:11211Additional .ini files parsed /etc/php/apache2-php5.3/ext-active/memcache.ini, /etc/php/apache2-php5.3/ext-active/memcached.ini 这两个值表示本地值和主值。 另外,如果我运行memcached的testing代码,如下所示:
session.save_handler memcache memcache
session.save_path tcp://localhost:11211 tcp://localhost:11211
<?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; ?>
我收到以下错误信息: 致命错误:在第2行/var/www/test/mem.php中找不到类“Memcache”
任何想法呢? 我是Gentoo的新手,并没有发现任何与configurationmemcached + php有关的特别的东西。
谢谢。
你目前的情况是,memcache和memcached在/etc/php/cli-php5.3/ext-active/的命令行上正确加载,但不是由Apache从/etc/php/apache2-php5.3/ext-active/加载/etc/php/apache2-php5.3/ext-active/ 。
假设这些文件的CLI版本与Apache版本完全相同,可能需要检查/etc/php/apache2-php5.3/php.ini以确保将文件正确地包含在扩展目录中。
在/etc/php/cli-php5.3/和/etc/php/apache2-php5.3/下运行diff 。
经典的“memcache vs. memcached”… :-)这些post可以帮助:
PHP memcached致命错误:类'Memcache'找不到: https : //stackoverflow.com/questions/2659035/php-memcached-fatal-error-class-memcache-not-found
memcache vs memcached?