I tried things like $_ENV['CLIENTNAME'] == 'Console' but that seems to work on only certain OS's (worked in windows, not linux).
I tried !empty($_ENV['SHELL']) but that doesn't work always either...
Is there a way to check this that will work in all OS's/environments?
Use php_sapi_name()
Returns a lowercase string that
describes the type of interface (the
Server API, SAPI) that PHP is using.
For example, in CLI PHP this string
will be "cli" whereas with Apache it
may have several different values
depending on the exact SAPI used.
For example:
$isCLI = ( php_sapi_name() == 'cli' );
You can also use the constant PHP_SAPI
Check on http://php.net/manual/en/features.commandline.php#105568
"PHP_SAPI" Constant
<?php
if (PHP_SAPI === 'cli')
{
// ...
}
?>
if ($argc > 0) {
// Command line was used
} else {
// Browser was used
}
$argc coounts the amount of arguments passed to the command line.
Simply using php page.php, $argc will return 1
Calling page.php with a browser, $argc will return NULL
I know this is an old question, but for the record, I see HTTP requests coming in without a User-Agent header and PHP does not automatically define HTTP_USER_AGENT in this case.
One solution is to check whether STDIN is defined:
if (!defined("STDIN")) {
die("Please run me from the console - not from a web-browser!");
}
Check the HTTP_USER_AGENT , it should exist in http request