error_log()
函数。
在 PHP 手册中,它讨论了所有错误日志类型,我理解所有错误日志类型,除了类型 3,它声明错误消息直接发送到 SAPI 日志记录处理程序。我的问题是 SAPI 到底是什么,您什么时候想使用它?
SAPI 代表“服务器 API”(API 代表“应用程序编程接口”)。它是控制“外部世界”与 PHP/Zend 引擎之间交互的机制。所以,你总是想使用它。事实上,你无法避免不费吹灰之力就使用它,因为即使 CLI 也被认为是 SAPI。
SAPI(服务器应用程序编程接口)也称为 ISAPI(Internet 服务器应用程序编程接口)用于 Microsoft,NSAPI(Netscape 服务器应用程序编程接口)用于 Netscape。
API 意思。
Web开发者可以想到REST、SOAP等API。您调用从服务器获取数据的链接。它允许您与网络服务器交互。
SAPI与REST或SOAP不同,SAPI是用于服务器的API(契约)。
例如:Common Gateway Interface是一个SAPI。如果一个网络服务器支持 CGI 并且另一个可执行程序实现它,那么网络服务器就可以动态地连接和生成网页。
看下图:
mod_php 实现 apache 和 php 可以相互理解的接口。
那么SAPI到底是什么:它是服务器(任何一种服务器)和程序之间的契约。只要遵守合同,他们不需要知道其他方面的细节。
来自维基百科:
换句话说,SAPI实际上是Web服务器提供的应用程序编程接口(API),以帮助其他开发人员扩展Web服务器功能。
举个例子,PHP 有一个直接的模块接口,称为 SAPI,用于不同的 Web 服务器;对于 Windows 上的 PHP 5 和 Apache 2.0,它以名为 php5apache2.dll 的 DLL 文件的形式提供,这是一个模块,除其他功能外,还提供 PHP 和 Web 服务器之间的接口,以以下形式实现服务器明白。这种形式就是所谓的 SAPI。
各种Web服务器扩展有不同种类的SAPI。例如,PHP 语言的另外两个 SAPI 是通用网关接口 (CGI) 和命令行接口 (CLI)。
对于 PHP 可用的 SAPI 是:Apache2 (mod_php)、FPM、CGI、FastCGI 和 CLI。
有争议的是,如果 API 在服务器上运行,它可能被称为 SAPI。
让我提醒一下,FPM(FastCGI 进程管理器)非常接近 PHP FastCGI 实现,具有一些(主要)对重负载站点有用的附加功能。
今天,从速度和效率的角度来看,FPM 将是最先进的 SAPI。与其他提到的 SAPI 相比,Apache 或 Nginx 的性能会更好。
一般来说,PHP 应用程序很少需要知道它们的 SAPI。如果要从 cron 调用脚本而不是从 Web 浏览器调用脚本,这通常很重要,在这种情况下,它会检查它的 SAPI 是否等于“cli”
我不是专家,但据我了解...
sapi 是 http 服务器软件与 cgi 解释器通信的通道,生成执行上下文(shell,套接字或端口),读取传递的环境变量,读取指定文件(通过环境变量指定,如 SCRIPT_NAME),解释文件并将生成的 html 代码返回给服务器以传递给 http 客户端(即浏览器)
如果是 php,sapi 可能是...
例如,php
error_log('my msg', 4)
将通过当前 sapi 的“stderr”流将消息发送回网络服务器,网络服务器软件将捕获该消息并将显示在其自己的错误日志工具中(/var/log/nginx/error.log
在我的例子中是文件)由他的 CGI 解释器抛出
我不确定,如果我错了请纠正我