我在香港机场待了几个小时,想让 1.3.x 分支在 Cygwin 上运行,并结合 FastCGI 来使用 PHP。我在旅途中通常在笔记本电脑上使用 Windows 系统工作,能够真正在所有平台,甚至是 Cygwin 上进行测试,是一件很棒的事情。
在我自己编译了支持 FastCGI 的 Cygwin 版 PHP 之后,它已经通过内部生成器自动启动了。唯一缺少的是一个可用的 FastCGI 处理器。在 Cygwin 中调试比在 Linux 下要困难得多,因为 strace 跟踪的是模拟环境而非原生系统调用
$ strace —mask=syscall .libs/lighttpd.exe -D -f ./lighttpd.conf
在 mod_fastcgi.c 代码中添加一堆 log_error_write() 语句后,最终揭示了实际发生的情况。我仍然不明白它为什么一开始就能工作 :)
changeset 343 是本次调试会话的最终结果,它将成为 1.3.14 版本的一部分,在我们返回 WAIT_FOR_EVENT 之前,会先移动‘请向我发送 FDEVENT_IN’。这也消除了有时出现的‘我收到了 FDEVENT_OUT,但不知道为什么’的消息。