使用以下命令时,我将两个模块都列出为已安装/配置:
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 (10.5.7)上运行,默认安装apache & php。此外,我还让memcached在127.0.0.1:11211上作为守护进程运行,并按照php-memcached库的要求运行libmemcache。我已经重启了很多次apache,甚至重新启动了一台机器。
有人知道为什么模块/扩展会出现在命令行中,而不是出现在我的phpinfo()中吗?我真的很困惑,在谷歌搜索了3个小时之后,我准备放弃了。
另外,请注意,我的phpinfo()输出ini文件如下,它们都是完全相同的文件:
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行中未知
有人知道为什么或如何会发生这种事吗?上面提到的两个文件肯定都在那里。我应该把这个问题移到服务器故障上吗?
发布于 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.
发布于 2010-05-14 07:12:51
因为两个版本都使用不同的php.ini
将您的php.ini放到phpinfo() outout中注意到的位置
发布于 2010-05-16 15:36:07
我怀疑这个问题是围绕着权限的。当您从comand行运行php时,它以用户调用它的身份运行。当作为apache模块运行时,它以“无人”的身份运行。
我假设memcached.so文件或它所在的目录没有适当的权限。
https://stackoverflow.com/questions/2832387
复制相似问题