PHP扩展(memcache | memcached)没有在phpinfo()中显示但在php -m和php -i中显示?

我在使用时将两个模块列为已安装/配置:
php -m

或者如果我使用:

php -i

但是当我使用时:

$m = new Memcache;
// or
$m = new Memcache();
// or
$m = new Memcached();
//or 
$m = new Memcached;

我收到以下错误:

Fatal error: Class 'Memcached' not found

我在Mac-OS X(10.5.7)上运行,默认安装apache& PHP.另外,我根据php-memcached库的要求在127.0.0.1:11211和libmemcache上运行memcached作为守护进程运行.我已经重启apache很多次,甚至完成了机器重启.

有谁知道为什么模块/扩展显示在命令行中而不是在我的phpinfo()中?我真的很难过,经过3个小时的谷歌搜索,我准备放弃了.

另外,请注意,我的phpinfo()输出我的ini文件,如下所示,它们都是完全相同的文件:

Configuration File (php.ini) Path:  /etc
Loaded Configuration File:  /private/etc/php.ini

更新:

Apache无法加载扩展.

[Fri May 14 04:22:26 2010] [warn]
Init: Session Cache is not configured
[hint: SSLSessionCache] PHP Warning:
PHP Startup: Unable to load dynamic
library
‘/usr/lib/php/extensions/no-debug-non-zts-20060613/memcached.so’
– (null) in Unknown on line 0 PHP Warning: PHP Startup: Unable to load
dynamic library
‘/usr/lib/php/extensions/no-debug-non-zts-20060613/memcache.so’
– (null) in Unknown on line 0

有谁知道为什么或如何发生这种情况?上面引用的两个文件都在那里.我应该将此问题移至服务器故障吗?

您的Web服务器可能正在使用mod_php,它是独立(CLI)解释器的单独代码.如果他们都使用相同的ini文件,并且在ini文件中配置了memcache扩展,那么听起来因为某些原因,mod_php无法加载扩展 – 检查你的webserver error_log是否有启动错误.

可能是mod_php是在没有memcache支持的情况下编译的(大多数扩展需要将一个存根文件链接到php代码中,即使大部分代码在运行时之前都没有链接).或者它可能是共享对象文件上的权限问题.或者您的网络服务器可能正在运行chroot,并且无法找到扩展名(这也意味着尽管ini文件似乎具有相同的路径,但这与不同的根相关).

HTH

C.

相关文章

文章浏览阅读8.4k次,点赞8次,收藏7次。SourceCodester Onl...
文章浏览阅读3.4k次,点赞46次,收藏51次。本文为大家介绍在...
文章浏览阅读1.1k次。- php是最优秀, 最原生的模板语言, 替代...
文章浏览阅读1.1k次,点赞18次,收藏15次。整理K8s网络相关笔...
文章浏览阅读1.2k次,点赞22次,收藏19次。此网络模型提供了...
文章浏览阅读1.1k次,点赞14次,收藏19次。当我们谈论网络安...