我试过的东西像$ _ENV [“CLIENTNAME”] ==“控制台”,但似乎工作就只有某些操作系统的(在Windows中工作,而不是Linux)。

我试过!空($ _ ENV [ 'SHELL']),但并不总是工作之一......

有没有一种方法来检查这一点,将在所有OS工作的/环境?

有帮助吗?

解决方案

使用 php_sapi_name()

  

,则返回一个小写字符串   描述接口的类型(在   服务器API,SAPI)PHP所使用。   例如,在CLI PHP这个字符串   将“CLI”,而与Apache它   可能有几个不同的值   取决于所用的确切SAPI。

例如:

$isCLI = ( php_sapi_name() == 'cli' );

您还可以使用恒定PHP_SAPI

其他提示

检查 http://php.net/manual/en/features。 commandline.php#105568 “PHP_SAPI” 恒

<?php
if (PHP_SAPI === 'cli')
{
   // ...
}
?> 

我知道这是一个老问题,但对于记录,我看到的HTTP请求来在没有用户代理头和PHP不会自动在这种情况下定义HTTP_USER_AGENT。

if ($argc > 0) {
    // Command line was used
} else {
    // Browser was used
}

$的argc coounts传递给命令行参数的量。 简单地使用PHP page.php文件,$的argc将返回1

用浏览器调用page.php文件,$的argc将返回NULL

的一个解决方案是检查STDIN是否定义:

if (!defined("STDIN")) {
    die("Please run me from the console - not from a web-browser!");
}

检查HTTP_USER_AGENT,应该在http请求存在

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top