如果网站 运行 作为 CLI,为什么网站不会将自己标识为 CLI?

Why site wont identify itself as CLI if it was run as CLI?

我开发的网站只有这个:

echo php_sapi_name();

现在从 CMD,我 运行 这个:

php -d display_errors=1 -r "echo file_get_contents('http://site');"

它 returns apache2handler 而不是 cli。为什么?

当您运行执行以下命令时:

php -d display_errors=1 -r "echo file_get_contents('http://site');"

您实际上是从 Apache 加载文件(使用 HTTP 协议)。这就是为什么您得到 apache2handler 而不是 cli 的原因。 PHP 脚本在 Apache 下 运行ning。这与通过某些浏览器访问 http://site 时得到的结果相同。在这种情况下,您的 PHP 客户端充当您的浏览器。

如果您需要从 PHP 客户端 运行 您的脚本,您必须从命令行以这种方式调用它:

php file.php

您需要能够从您的文件系统访问该文件。使用上述命令,我假设您与脚本位于同一目录中。