为什么 phpinfo() 在 LEMP 堆栈中输出 html?

Why does phpinfo() output html in a LEMP stack?

我得到了 LEMP 堆栈 运行,但不明白为什么显示 html 页面。我在 info.php 中得到以下内容:

<?php
phpinfo();
?>

直接执行得到如下信息:

php info.php | head -n 2
phpinfo()
PHP Version => 7.0.18-0ubuntu0.16.04.1

但是当我通过 nginx 访问 info.php 并且 fastcgi 访问 php 时,会返回一个完整的 html 页面,包括链接和 php 徽标。开头例如:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<style type="text/css">
body {background-color: #fff; color: #222; font-family: sans-serif;}

每当我使用其他 php 脚本回显某些文本时,这种情况不会发生,只会返回文本。

谁能解释为什么会这样?

这就是 PHP 的构建方式。来自 documentation:

Note: phpinfo() outputs plain text instead of HTML when using the CLI mode.

PHP 检测其 运行 所在的上下文,并采取适当的行动。仅此而已。