PHP如何与Apache接口?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (96)

我几乎已经完成了在Java下编写HTTP / 1.0兼容的Web服务器(没有商业用途,这只是为了好玩),基本上我想包括PHP支持。我意识到这根本不是一件容易的事,但我认为这将是一个不错的成就。

所以我想知道PHP如何与Apache Web服务器(或任何其他Web服务器)完全接口,所以我可以从中学习并编写自己的PHP包装器。它不一定是mod_php,我不介意写一个FastCGI包装器 - 据我所知,它也能够运行PHP。

我本以为PHP所需要的是输出到客户端(所以它可以解释PHP部分),来自客户端的完整HTTP请求(因此它可以提取POST变量等)以及客户端的主机名。然后,您只需将解析的PHP代码写入输出流即可。可能会有更多的东西,但本质上这是我本来以为它的工作原理。

从我迄今为止收集到的信息来看,apache2handler提供了一个PHP,它使用它来'连接'到Apache。

如果任何人有更多的信息,经验,或与此有关的某种规格,那么请让我知道。

提问于
用户回答回答于

有三种方式可以从Apache调用PHP:

1)作为一个模块 - 这涉及将php解释器与由web服务器发布的钩子库链接起来

2)CGI - 网络服务器为每个请求启动一个解释器的实例,并通过stdin,命令行和环境变量将参数传递给解释器,stdout发送给客户端,stderr应写入error_log

3)fastCGI - 这消除了为每个请求启动一个新进程的开销 - 解释器作为守护进程运行

CGI是最简单的实现,但不能扩展/表现良好,该模块将是迄今为止最困难的。FastCGI几乎与模块方法一样快。CGI和fastCGI是开放的,有据可查的API。

还有其他的方式来实现你的目标 - 例如Quercus

用户回答回答于

简而言之,这就是它的工作原理:

Apache通常通过获取文件并向HTTP连接发送流来提供文件。但是,使用PHP,Apache会抓取文件,将其导入到PHP二进制文件中,并将输出流从命令发送到HTTP连接。

扫码关注云+社区

领取腾讯云代金券