我按以下方式安装了memcache:
1)yum install memcached 2)yum install php-pecl-memcached 3)还启用了php.ini中的'memcached.so'
我用以下方式测试了memcached:
$ mc = new Memcache; $ mc-> addServer('localhost',11211); echo“服务器的版本:”。 $ mc-> getVersion();
但它会产生以下错误:
PHP警告:PHP启动:无法加载动态库'/usr/lib64/php/modules/memcached.so' - /usr/lib64/php/modules/memcached.so:undefined symbol:php_json_encode in Unknown on line 0 PHP致命错误:第2行的/root/memcacheTest.php中找不到类“Memcache”
谢谢你。
答案 0 :(得分:1)
我不太了解PHP(或根本不知道),但是从错误消息中我会猜测你没有安装PHP JSON扩展,这显然需要memchached扩展。
Apparently,JSON扩展自5.2.0版开始就在PHP中,因此:
或
当然存在配置错误的可能性,但我认为这种可能性略有不足。
答案 1 :(得分:1)
这表明memcached.so没有成功加载。
错误显示原因:json.so应该在memcached.so之前加载
请使用php -m | grep memcached
检查memcached.so是否已成功加载。
memcached
,则表示成功。PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/memcached.so' - /usr/lib64/php/modules/memcached.so: undefined symbol: php_json_decode_ex in Unknown on line 0
这是一个解决方案: 例如你的php.ini是/etc/php.ini,你的php.d是/etc/php.d /
解决方案1
vim /etc/php.d/memcached.ini
extension=memcached.so
php -m | grep memcached
检查memcached是否已成功加载解决方案2
rm /etc/php.d/json.ini
extension=json.so
extension=memcached.so
php -m | grep memcached
检查memcached是否已成功加载答案 2 :(得分:0)
您可以检查并仔细检查用户权限吗?另外,我使用PHP的经验是PHP的分发存储库版本不是很好。我通过从头开始编译PHP解决了这些符号错误。但这是一个非常激进且耗时的解决方案。
答案 3 :(得分:0)
http://pecl.php.net/bugs/bug.php?id=17574&edit=1
请确保在BEFORE之前指定了extension = json.so 延长= memcached.so。
我在php.ini中放置了extension = memcached.so,而extension = json.so 在/etc/php.d/json.ini中指定,在php.ini之后解析。 这就是为什么PHP在加载时找不到php_json_encode()的原因 memcached.so。
另外,检查memcached.so上的权限是否与其他扩展名相同
答案 4 :(得分:0)
尝试安装2.0版。这对我有帮助。
yum -y install gcc-c++
wget http://launchpad.net/libmemcached/1.0/0.50/+download/libmemcached-0.50.tar.gz
tar xzf libmemcached-0.50.tar.gz
cd libmemcached-0.50
./configure
make
make install
wget http://pecl.php.net/get/memcached-2.0.0b2.tgz
pecl install memcached-2.0.0b2.tgz
echo 'extension=memcached.so' > /etc/php.d/memcached.ini
service php-fpm restart
cd ..
rm -r libmemcached-0.50*
rm -r memcached-