memcache fast-cgi php apache 2.2 windows 7 创建问题

memcache fast-cgi php apache 2.2 windows 7 创建问题

我正在尝试在 Windows 7 机器上运行 memcache、fast-cgi 和 apache 2.2 + php。如果我不使用 memcache,一切都会正常。

当我extension=php_memcache.dll在 php.ini 中禁用它时,一切都恢复正常。

一旦我启动 apache,apache 日志就会显示:

[Wed Jan 12 18:19:23 2011] [notice] Apache/2.2.17 (Win32) mod_fcgid/2.3.6 configured -- resuming normal operations
[Wed Jan 12 18:19:23 2011] [notice] Server built: Oct 18 2010 01:58:12
[Wed Jan 12 18:19:23 2011] [notice] Parent: Created child process 412
[Wed Jan 12 18:19:23 2011] [notice] Child 412: Child process is running
[Wed Jan 12 18:19:23 2011] [notice] Child 412: Acquired the start mutex.
[Wed Jan 12 18:19:23 2011] [notice] Child 412: Starting 64 worker threads.
[Wed Jan 12 18:19:23 2011] [notice] Child 412: Starting thread to listen on port 80.

访问该页面后(该页面刚刚有echo phpinfo())我在error.log中收到此错误:

[Wed Jan 12 18:20:54 2011] [warn] [client 127.0.0.1] (OS 109)The pipe has been ended.  : mod_fcgid: get overlap result error
[Wed Jan 12 18:20:54 2011] [error] [client 127.0.0.1] Premature end of script headers: index.php

我的 ext 目录中有 php_memcache.dll,并且 httpd.conf 如下:

LoadModule fcgid_module modules/mod_fcgid.so

FcgidInitialEnv PHPRC "c:/php"
FcgidInitialEnv PATH "c:/php;C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem;"
FcgidInitialEnv SystemRoot "C:/Windows"
FcgidInitialEnv SystemDrive "C:"
FcgidInitialEnv TEMP "C:/WINDOWS/Temp"
FcgidInitialEnv TMP "C:/WINDOWS/Temp"
FcgidInitialEnv windir "C:/WINDOWS"
FcgidIOTimeout 64
FcgidConnectTimeout 32
FcgidMaxRequestsPerProcess 500

<Files ~ "\.php$>"
  AddHandler fcgid-script .php
  FcgidWrapper "c:/php/php-cgi.exe" .php
</Files>

因此问题肯定与 memcache 有关,因为如果我禁用它,fast-cgi 似乎可以正常工作。这有什么可能的原因吗?

memcache 服务正在运行...我可以通过控制面板->服务来检查它。

答案1

手动运行 PHP(找到 php.exe 并双击它)。经常发生的情况是,PHP 由于某种原因无法加载扩展,并尝试弹出消息框告诉您这一点。由于当它作为服务运行时没有人可以看到消息框,所以没有人知道发生了什么。

答案2

我让它工作了。问题出在 dll 版本和 php 版本上。我将 php 升级到 5.3,现在没问题了。

您还必须小心线程安全和非线程安全版本...任何不兼容性都不会让您运行 memcache。

相关内容