PHP 解释器如何与 Apache 交互?

How does the PHP interpreter interact with Apache?

我们一直在考虑为我们一直在进行的项目编写 php 解释器。除了解释,我一直在尝试——但没有成功——找到 PHP 解释器如何与 http 服务器交互。所以我来找你了,亲爱的 Stack Overflow 知识渊博的人。

我读到 php 在 localhost:9000 上收听。不用说,我试图连接到它,但没有用。也许网络服务器运行 "php file.php" 并获得输出?

此外,解释 .php 文件的 php 解释器和我们解释 .pqp 文件的解释器(为了争论起见,我们称之为 pqp)是否可以在一个网络服务器中共存?

非常感谢!

PHP 可以通过某些方式与网络服务器交互。一种确实是将 PHP 文件通过管道传输到 PHP cli 并提供 this question 中的输出。正如我在那里写的那样:真的不推荐。

下一个最好的事情是扩展 PHP 的 sapi,它为网络服务器提供了一组连接器。在这种情况下,PHP 将充当网络服务器模块(请参阅 apache+mod_php)。这样做的一个缺点是 PHP 试图解析它得到的所有东西。

一种独立于网络服务器的方法是通过通用网关接口连接到 PHP,这是用于各种交互式服务器端组件的定义明确的接口。然而,它非常慢(而且有点不安全)。

最后一步是实施 FastCGI。这是对 CGI 的改进,因为它尝试连接到 运行 进程。在 PHP 世界中,这是通过 php-fpm 实现的,它(默认情况下)确实监听 9000/tcp。