首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP扩展名(memcache\memcached)不显示在phpinfo()中,而是显示在php -m和php -i中?

PHP扩展名(memcache\memcached)不显示在phpinfo()中,而是显示在php -m和php -i中?
EN

Stack Overflow用户
提问于 2010-05-14 07:02:27
回答 5查看 14.2K关注 0票数 6

使用以下命令时,我将两个模块都列出为已安装/配置:

代码语言:javascript
复制
php -m

或者如果我用:

代码语言:javascript
复制
php -i

但当我用:

代码语言:javascript
复制
$m = new Memcache;
// or
$m = new Memcache();
// or
$m = new Memcached();
//or 
$m = new Memcached;

我得到以下错误:

代码语言:javascript
复制
Fatal error: Class 'Memcached' not found

我在Mac (10.5.7)上运行,默认安装apache & php。此外,我还让memcached在127.0.0.1:11211上作为守护进程运行,并按照php-memcached库的要求运行libmemcache。我已经重启了很多次apache,甚至重新启动了一台机器。

有人知道为什么模块/扩展会出现在命令行中,而不是出现在我的phpinfo()中吗?我真的很困惑,在谷歌搜索了3个小时之后,我准备放弃了。

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

代码语言:javascript
复制
Configuration File (php.ini) Path:  /etc
Loaded Configuration File:  /private/etc/php.ini 

更新:

Apache未能加载扩展。

2010年5月14日22:26 Init:会话缓存未配置提示:'/usr/lib/php/extensions/no-debug-non-zts-20060613/memcached.so‘启动:无法加载动态库

- (null)在第0行中未知

有人知道为什么或如何会发生这种事吗?上面提到的两个文件肯定都在那里。我应该把这个问题移到服务器故障上吗?

EN

回答 5

Stack Overflow用户

发布于 2010-05-14 08:16:07

您的CLI服务器可能正在使用mod_php,这是与独立(CLI)解释器分离的代码。如果它们都使用相同的ini文件,并且在ini文件中配置了memcache扩展名,那么听起来好像由于某种原因,mod_php无法加载扩展--检查您的the服务器error_log中的启动错误。

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

HTH

结果表明,C.

票数 4
EN

Stack Overflow用户

发布于 2010-05-14 07:12:51

因为两个版本都使用不同的php.ini

将您的php.ini放到phpinfo() outout中注意到的位置

票数 3
EN

Stack Overflow用户

发布于 2010-05-16 15:36:07

我怀疑这个问题是围绕着权限的。当您从comand行运行php时,它以用户调用它的身份运行。当作为apache模块运行时,它以“无人”的身份运行。

我假设memcached.so文件或它所在的目录没有适当的权限。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2832387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档