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

2024-03-01

当我使用时,我将两个模块列为已安装/配置:

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 

UPDATE:

Apache 无法加载扩展。

[2010 年 5 月 14 日星期五 04:22:26] [警告] 初始化:会话缓存未配置 [提示:SSLSessionCache] PHP 警告: PHP 启动:无法加载动态 图书馆 '/usr/lib/php/extensions/no-debug-non-zts-20060613/memcached.so' - (null) 位于第 0 行未知 PHP 警告:PHP 启动:无法加载 动态库 '/usr/lib/php/extensions/no-debug-non-zts-20060613/memcache.so' - (null) 位于第 0 行未知

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


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

mod_php 可能是在没有 memcache 支持的情况下编译的(大多数扩展需要有一个链接到 php 代码的存根文件,即使大部分代码直到运行时才链接)。或者可能是共享对象文件的权限问题。或者您的网络服务器可能正在运行 chroot,并且无法找到扩展名(这也意味着虽然 ini 文件看起来具有相同的路径,但这是相对于不同的根目录的)。

HTH

C.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 扩展 (memcache|memcached) 未显示在 phpinfo() 中,但显示在 php -m 和 php -i 中? 的相关文章

随机推荐