如何使用PHP检查脚本正在从控制台或浏览器请求运行?
-
22-07-2019 - |
题
我试过的东西像$ _ENV [“CLIENTNAME”] ==“控制台”,但似乎工作就只有某些操作系统的(在Windows中工作,而不是Linux)。
我试过!空($ _ ENV [ 'SHELL']),但并不总是工作之一......
有没有一种方法来检查这一点,将在所有OS工作的/环境?
解决方案
,则返回一个小写字符串 描述接口的类型(在 服务器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请求存在
不隶属于 StackOverflow