我使用 Homebrew 进行所有安装,但在这里遇到了一些麻烦......
所以我有一个 PHP 应用程序,无论出于何种原因,它都使用“memcache”和“memcached”模块。任何。
系统是 OS X Lion,10.7.4。Apache 是 Apple 随操作系统 Apache/2.2.21 提供的库存。我正在使用 Homebrew 的 PHP 5.3.14。
我安装了我需要的一切:
brew install libmemcached memcached php53 php53-memcache php53-memcached
并进行配置——将 Apache 设置httpd.conf
为指向 PHP .so 文件,并将 memcache 和 memcached 扩展添加到我的php.ini
我加载了我的应用程序......它使 httpd 崩溃了!
这是我得到的故障转储(长转储):https ://gist.github.com/3125309
如果我brew uninstall libmemcached
弹回 httpd,我就可以正常访问我的应用程序,但是 memcached 实际上并没有工作,因为它(dur)找不到 libmemcached。
我真的很想让 memcached 在本地正常工作,但我不确定这里发生了什么。这只是 PHP 的一个问题;我可以使用 Python 的python-memcached
模块来访问它(但我不确定它是否使用 libmemcached)。
有什么想法吗?我在故障转储中没有看到任何看起来有用的东西:(
编辑:啊,行号很有帮助!这是关联的 libmemcached 源代码块:
#ifdef HAVE_SNDTIMEO
if (server->root->snd_timeout)
{
struct timeval waittime;
waittime.tv_sec= 0;
waittime.tv_usec= server->root->snd_timeout;
int error= setsockopt(server->fd, SOL_SOCKET, SO_SNDTIMEO,
&waittime, (socklen_t)sizeof(struct timeval));
assert(error == 0);
}
#endif
所以这听起来像是一个超时问题?但是我的 memcached 在本地主机上,它不应该超时......除非它没有尝试连接到正确的服务器。
不过,为什么这会导致完整的 httpd 崩溃?
EDIT2:我在禁用 SNDTIMEO 和 RCVTIMEO 的情况下重新编译,现在我很高兴启动并运行......但是,A)为什么配置脚本确定可以启用它们,B)为什么它会导致 httpd 崩溃?