我正在使用 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
均含有扩展=memcache.so和扩展=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() ?>
它不会显示任何已加载的模块,它仅显示: 这两个值表示本地值和主值。此外,如果我为 memcached 运行测试代码,如下所示:
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
<?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;
?>
我收到以下错误消息: 致命错误:在 /var/www/test/mem.php 第 2 行中未找到类“Memcache”
对此有什么想法吗?我是 Gentoo 新手,没有发现任何与配置 memcached+php 相关的特殊内容。
谢谢。
答案1
您当前的情况是,memcache 和 memcached 在命令行上已正确加载,/etc/php/cli-php5.3/ext-active/
但不是由 Apache 从 加载/etc/php/apache2-php5.3/ext-active/
。
假设这些文件的 CLI 版本与 Apache 版本完全相同,可能值得检查/etc/php/apache2-php5.3/php.ini
以确保它正确地包含了扩展目录中的文件。
在和下的所有内容上运行diff
s 。/etc/php/cli-php5.3/
/etc/php/apache2-php5.3/
答案2
经典的“memcache 与 memcached”... :-) 这些帖子可以提供帮助:
PHP memcached 致命错误:未找到类“Memcache”:https://stackoverflow.com/questions/2659035/php-memcached-fatal-error-class-memcache-not-found
memcache 与 memcached 的关系?